Vla-getpapermargins

提供:GizmoLabs - だいたい CAD LISP なサイト
2016年1月31日 (日) 15:43時点におけるGizmon (トーク | 投稿記録)による版 (ページの作成:「{{AutoLISP}} ; 構文 : (vla-getpapermargins ''vla-object'' ''LowerLeft '' ''UpperRight '' ) ; 機能 : レイアウトまたは印刷設定の余白を取得する。...」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
構文
(vla-getpapermargins vla-object LowerLeft UpperRight )


機能
レイアウトまたは印刷設定の余白を取得する。


引数
  • vla-object … VLAオブジェクト(Layout、PlotConfiguration)
  • LowerLeft … 左下余白の X および Y の値。
  • UpperRight … 右上余白の X および Y の値。


戻り値
nil


  • 印刷基点は、ここで指定したマージンだけ用紙の端からオフセットされる。
  • 値の単位は PaperUnits プロパティで指定する。


サンプル
(vl-load-com)
(defun c:Example_GetPaperMargins()
    ;; 現在の図面のレイアウトのコレクションにアクセスし、モデル空間を除く
    ;; 各レイアウトの GetPaperMargins プロパティから返される余白に基づいて
    ;; プロット サイズをリストするサンプル。
    (setq acadObj (vlax-get-acad-object))
    (setq doc (vla-get-ActiveDocument acadObj))
    
    ;; 現在の図面の layouts コレクションを取得
    (setq Layouts (vla-get-Layouts doc))
    
    (setq msg "")   ;; 空文字
    
    ;; レイアウトのマージン情報を取得
    (vlax-for Layout Layouts
        ;; Skip model space
        (if (/= (vla-get-Name Layout) "Model")
               (progn
                   (vla-put-ActiveLayout doc Layout)
            
                   (setq msg (strcat msg (vla-get-Name Layout) "\n"))
            
                   ;; 用紙サイズとマージンの情報
                   (vla-GetPaperMargins Layout 'MarginLowerLeft 'MarginUpperRight)
                   (vla-GetPaperSize Layout 'PaperWidth 'PaperHeight)

                   ;; 印刷可能範囲を計算
                   (setq PlotWidth (- PaperWidth (- (vlax-safearray-get-element MarginUpperRight 0) (vlax-safearray-get-element MarginLowerLeft 0))))
                   (setq PlotHeight (- PaperHeight (- (vlax-safearray-get-element MarginUpperRight 1) (vlax-safearray-get-element MarginLowerLeft 1))))
            
                   ;; インチかミリか
                   (setq Measurement " ミリメートル")
            
                   ;; Format for display
                   (setq msg (strcat msg "レイアウトの用紙サイズは : " (rtos PaperWidth 2) " X " (rtos PaperHeight 2) Measurement "\n\n"))
                   (setq msg (strcat msg "  用紙の余白は : \n"
                                              "  左 (" (rtos (vlax-safearray-get-element MarginLowerLeft 0) 2) ")" Measurement "\n"
                                              "  右 (" (rtos (vlax-safearray-get-element MarginUpperRight 0) 2) ")" Measurement "\n"
                                              "  上 (" (rtos (vlax-safearray-get-element MarginUpperRight 1) 2) ")" Measurement "\n"
                                              "  下 (" (rtos (vlax-safearray-get-element MarginLowerLeft 1) 2) ")" Measurement "\n\n"))
                  
                   (setq msg (strcat msg "印刷可能範囲は: " (rtos PlotWidth 2) " X " (rtos PlotHeight 2) Measurement "\n"))
                   (setq msg (strcat msg "_____________________\n"))
               )
           )
    )
    
    ;; 用紙サイズとマージンを表示
    (alert (strcat "この図面の用紙の印刷情報は : " msg))
)

関連事項