AStorey 发表于 2022-7-5 16:37:03

需要解扭LISP

从前,我有一个lsp例程叫做“untwist”。一旦图形被dview扭曲(或使用“扭曲”lsp),该“取消扭曲”将旋转回0,并将snapang设置为0!
我想念它。
谁能帮帮我吗。好久不见了。

broncos15 发表于 2022-7-5 16:55:35

您所需要做的就是使用plan world命令并重置snapang和angbase。通过检查变量viewsize和viewctr,也可以确保将缩放设置为相同。
(if (not (= 1 (getvar 'cvport)))(command "._plan" "_w"))
(setvar 'snapang 0)
(setvar 'angbase 0)

AStorey 发表于 2022-7-5 17:04:13

 
谢谢你的回复。我Lisp程序。好的,我一点也不会说Lisp程序!这是供词。
你的代码实际上是我可以使用的lisp吗?或者这是一些可以借鉴的想法?
有一次Lisp程序把我宠坏了。要是我把它放在口袋里以后用就好了。
非常感谢。

ReMark 发表于 2022-7-5 17:12:26

您提到的lisp的可能替代品。
 
http://cadtips.cadalyst.com/other/perform-dview-twist-quickly

broncos15 发表于 2022-7-5 17:19:55

快速编写且未经测试:
(defun c:plan2 (/ *error* ctr ht)
(defun *error* (msg)
   (LM:endundo (LM:acdoc))
   (if (not
         (member msg '("Function cancelled" "quit / exit abort"))
       )
   (princ (strcat "\nError: " msg))
   )
   (princ)
)
(if (> (getvar 'cvport) 1)
   (progn
   (LM:startundo (LM:acdoc))
   (command "._ucs" "_w")
   (setq ctr (getvar 'viewctr)
         ht(getvar 'viewsize)
   )
   (command "._plan" "_W")
   (setvar 'snapang 0)
   (setvar 'angbase 0)
   (command "zoom" "c" ctr ht)
   (LM:endundo (LM:acdoc))
   )
)
(princ)
)
;;;Created by Lee Mac
(defun LM:startundo (doc)
(LM:endundo doc)
(vla-startundomark doc)
)
;;;Created by Lee Mac
(defun LM:endundo (doc)
(while (= 8 (logand 8 (getvar 'undoctl)))
   (vla-endundomark doc)
)
)
;;;Created by Lee Mac
(defun LM:acdoc nil
(eval (list 'defun 'LM:acdoc 'nil (vla-get-activedocument (vlax-get-acad-object))))
(LM:acdoc)
)

AStorey 发表于 2022-7-5 17:36:33

好吧,你是国王!它起作用了。我决不会那样做。
非常非常感谢。

tombu 发表于 2022-7-5 17:43:50

一个简单的宏怎么样?
^C^C_dview;all;;tw;0;^P(progn(setvar "snapang" 0)(princ))
页: [1]
查看完整版本: 需要解扭LISP