再一次对于钢细节,我使用AdvanceSteel。该程序在图纸空间中的单独dwg中制作文档(一个图形-一个dwg,模型空间为空)。要获得的只是打开dwg,将所有对象从图纸空间复制或移动到模型空间,在模型空间中缩放对象(比例因子保存在图形表的属性中),保存文件并退出。
要打开多个图形,我将使用LeeMac script writer。
_exportlayout将不起作用,因为这会将布局导出到新的dwg。
第一个样本:
- (defun m2ms ( / ps ss pts vp )
- (setq ps (car (layoutlist)))
- (setvar 'CTAB ps)
- (if (setq ss (ssget "_X" (list (cons 410 ps))))
- (progn
- (setq pts (LM:ssboundingbox ss))
- (setq vp (cd:ACX_AddViewport (cd:ACX_Paper) (car pts) (-(caadr pts) (caar pts)) (-(cadadr pts) (cadar pts)) 1 3))
- (vla-put-CustomScale vp 0.1) ; to change
- (vl-cmdf "_.chspace" ss "")
- )
- )
- (princ)
- )
子功能:
- (defun LM:ssboundingbox ( sel / idx llp ls1 ls2 obj urp )
- (repeat (setq idx (sslength sel))
- (setq obj (vlax-ename->vla-object (ssname sel (setq idx (1- idx)))))
- (if (and (vlax-method-applicable-p obj 'getboundingbox)
- (not (vl-catch-all-error-p (vl-catch-all-apply 'vla-getboundingbox (list obj 'llp 'urp))))
- )
- (setq ls1 (cons (vlax-safearray->list llp) ls1)
- ls2 (cons (vlax-safearray->list urp) ls2)
- )
- )
- )
- (if (and ls1 ls2)
- (mapcar '(lambda ( a b ) (apply 'mapcar (cons a b))) '(min max) (list ls1 ls2))
- )
- )
- (defun cd:ACX_AddViewport (Space Pb Width Height HJust VJust / obj)
- (setq Pb (trans Pb 1 0))
- (cond
- ( (= HJust 1) (setq Pb (list (+ (car Pb) (/ Width 2)) (cadr Pb) (caddr Pb))) )
- ( (= HJust 3) (setq Pb (list (- (car Pb) (/ Width 2)) (cadr Pb) (caddr Pb))) )
- )
- (cond
- ( (= VJust 1) (setq Pb (list (car Pb) (- (cadr Pb) (/ Height 2)) (caddr Pb))) )
- ( (= VJust 3) (setq Pb (list (car Pb) (+ (cadr Pb) (/ Height 2)) (caddr Pb))) )
- )
- (vla-Display
- (setq obj
- (vla-AddPViewport
- Space
- (vlax-3d-point Pb)
- Width
- Height
- )
- )
- :vlax-true
- )
- obj
- )
- (defun cd:ACX_Paper ()
- (setq *cd-PaperSpace* (vla-get-PaperSpace (cd:ACX_ADoc)))
- )
- (defun cd:ACX_ADoc ()
- (or
- *cd-ActiveDocument*
- (setq *cd-ActiveDocument*
- (vla-get-ActiveDocument (vlax-get-acad-object))
- )
- )
- *cd-ActiveDocument*
- )
|