ziele_o2k 发表于 2022-7-5 16:09:30

从图纸空间移动对象

我有一个从程序导出的dwg文件。该程序将所有内容导出到paperspace。我不想把一切都搬到模型空间里去。
我认为chspace命令不起作用,因为布局中没有视口。
每个dwg文件只有一个布局。
在将对象移动到模型空间后,我还想缩放它们

maratovich 发表于 2022-7-5 16:14:40

Comand线路:
_导出布局

BIGAL 发表于 2022-7-5 16:21:01

对于相同的dwg,在对象周围绘制视口,但为其设置正确的比例,然后使用CHSPACE。这也将扩大规模。

ziele_o2k 发表于 2022-7-5 16:24:24

请将此主题移回AutoLISP、Visual LISP和DCL,因为我想使用LISP实现这一点。无论如何,我将尝试使用BIGAL命题。

ReMark 发表于 2022-7-5 16:29:32

比例因子是固定的还是可变的?

maratovich 发表于 2022-7-5 16:30:50

以下请求将:
制作不同的比例
要放在附近的图像
包围图像
一次处理100500个文件
在一个文件中收集所有不同的文件。。。
所以

ReMark 发表于 2022-7-5 16:33:50

这就是一个快速的小程序如何发展成为一个成熟的程序。这被称为“项目蠕变”。英雄联盟

BIGAL 发表于 2022-7-5 16:38:05

ziele_o2k在第一篇文章之后,样例dwg对解决您的问题有很大帮助。

ziele_o2k 发表于 2022-7-5 16:42:10

再一次对于钢细节,我使用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*
)

maratovich 发表于 2022-7-5 16:48:54


问题是什么?
给出示例文件。
页: [1] 2
查看完整版本: 从图纸空间移动对象