从图纸空间移动对象
我有一个从程序导出的dwg文件。该程序将所有内容导出到paperspace。我不想把一切都搬到模型空间里去。我认为chspace命令不起作用,因为布局中没有视口。
每个dwg文件只有一个布局。
在将对象移动到模型空间后,我还想缩放它们 Comand线路:
_导出布局 对于相同的dwg,在对象周围绘制视口,但为其设置正确的比例,然后使用CHSPACE。这也将扩大规模。 请将此主题移回AutoLISP、Visual LISP和DCL,因为我想使用LISP实现这一点。无论如何,我将尝试使用BIGAL命题。 比例因子是固定的还是可变的? 以下请求将:
制作不同的比例
要放在附近的图像
包围图像
一次处理100500个文件
在一个文件中收集所有不同的文件。。。
所以 这就是一个快速的小程序如何发展成为一个成熟的程序。这被称为“项目蠕变”。英雄联盟 ziele_o2k在第一篇文章之后,样例dwg对解决您的问题有很大帮助。 再一次对于钢细节,我使用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*
) 和
问题是什么?
给出示例文件。
页:
[1]
2