....... 我花了一些时间来研究这个问题,并快速编写了以下草稿,但是该程序目前仅限于在viewtwist为零的视口中使用:
;; Modelspace to Paperspace-Lee Mac
(defun c:ms2ps ( / doc idx lst mat org sel )
(cond
( (= 1 (getvar 'tilemode))
(prompt "\nCommand only available in Paperspace.")
)
( (= 1 (getvar 'cvport))
(prompt "\nPlease activate a viewport.")
)
( (setq sel (ssget '((410 . "Model"))))
(repeat (setq idx (sslength sel))
(setq lst (cons (vlax-ename->vla-object (ssname sel (setq idx (1- idx)))) lst))
)
(setq mat
(vlax-tmatrix
(append
(mapcar
'(lambda ( a b )
(append (mapcar '- (trans (trans a 0 2) 2 3) org) (list b))
)
'(
(1.0 0.0 0.0)
(0.0 1.0 0.0)
(0.0 0.0 1.0)
)
(setq org (trans (trans '(0.0 0.0 0.0) 0 2) 2 3))
)
'((0.0 0.0 0.0 1.0))
)
)
)
(foreach obj
(vlax-invoke (setq doc (vla-get-activedocument (vlax-get-acad-object))) 'copyobjects lst
(vla-get-block
(vla-item
(vla-get-layouts doc)
(getvar 'ctab)
)
)
)
(vla-transformby obj mat)
)
)
)
(princ)
)
(vl-load-com) (princ)
这是我们以前在办公室使用的。
命令包括:
C2P=复制到纸面空间&M2P=移动到纸面空间
C2M=复制到模型空间&M2M=移动到模型空间
然而,它有这个“买我”的东西。
将所有内容放在一个文件夹中,该文件夹应列在autocad的支持文件夹中
SP2SP。LSP
sp2sp。dcl
SP2SP。拉链
谢谢李抽出时间做这件事。以下是我的观察结果:
1) 可以让用户激活视口而不是终止命令吗?
2) 它不会提取所选实体。目前它正在复制整个区块(这是一件必备品)
3) 视口显示是否可以临时锁定?否则,如果用户在模型空间模式下放大,可能会弄乱图形。(安全功能)
4) 选择完成后,是否可以自动返回到图纸空间,然后关闭命令。
我不确定哪一个不能做到,但我还是想提一提,这样你们可以更好地做出决定。
Nod684:我不能使用你发布的代码,因为里面有一些版权的东西。谢谢你的帮助。 嗨,李,
我看到你在网站上添加了MS2P。是否有可能添加我在第16篇文章中列出的一些愿望/要求。 以下是如何锁定/解锁视口(vpObj)
(vla put DisplayLocked vpObj[:vlax true/:vlax false])
其中:vlax true锁定它,而:vlax false解锁它。
然后,要在lisp例程中在图纸空间和模型空间之间切换,可以按以下方式使用TILEMODE:
以下内容归功于Zorg:
(defun c:mm( / )
(command "_tilemode" "1")
)
(defun c:pm( / )
(command "_tilemode" "0")
)
不确定“提取”实体是什么意思。。。。
然后不是终止命令,而是允许用户选择视口。。。。你可以使用这个函数,由Lee Mac编写
(defun c:vpon ( / d s )
(vl-load-com)
(if (setq s (ssget "_+.:S:E:L" '((0 . "VIEWPORT"))))
(progn
(setq d (vla-get-activedocument (vlax-get-acad-object)))
(vla-put-mspace d :vlax-true)
(vla-put-activeviewport d (vlax-ename->vla-object (ssname s 0)))
)
)
(princ)
)
(defun c:vpoff ( )
(vla-put-mspace (vla-get-activedocument (vlax-get-acad-object)) :vlax-false)
(princ)
)
您可以将这些代码合并到Lee的完整例程中,为您自己的需要创建自定义版本。我不希望李根据你的需要修改他的完整程序,但如果这些升级比个人修改更多,那么他可能会!
我知道这也需要你付出一些努力,但我希望我给了你足够的领先优势,让你成功。
HTH公司 bhull1985,
我要试试看。让我们看看我能用我有限的LISP知识做些什么。谢谢你的有用提示。 不客气。
至少你可以找到要更换的零件,然后来这里询问如何更换
页:
1
[2]