缩放窗口
虽然我也不擅长编写脚本,但我更擅长用lisp编写脚本。我想摆脱这一点,开始将脚本宏转换为lisp
如何编写缩放窗口lisp?
下面是脚本。它解释了我想做什么,但我希望它在Lisp程序。
^C^Cz;w结束;/。结束/
而且
我编写了一个简单的代码来更改实体的线条粗细。
再说一次,它是在脚本中,不是很好。我想选一条线,或者(如果我错过了)画一个篱笆,然后选择一组。我如何用lisp写这个?
^C^C\U更改;\\;Pt; 嗨,菜鸟,
这够了吗?
(defun c:zw ()
(setvar "cmdecho" 0)
(command "zoom"
"w"
pause
pause
) ; end zoom
(setvar "cmdecho" 1)
(princ)
) ; end program
对于宽度:
(defun c:polyw ()
(if
(setq obs (ssget))
(progn
(command "_.pedit"
"M"
obs ""
"w"
pause
""
)
) ; end progn
(alert "\nPlease Select Objects!")
) ; end if
(princ)
) ; end program 谢谢您的及时回复!
(defun c:zw()(setvar“cmdecho”0)(命令“zoom”“w”pause pause);结束缩放(setvar“cmdecho”1)(princ));结束程序
如何使缩放窗口在每次暂停之前捕捉到端点
对于宽度:
代码:
(defun c:polyw()(if(setq obs(ssget))(progn(command“_.pedit”“M”obs”““w”pause”“);结束程序(警报“\n请选择对象!”);结束if(princ));结束程序
事实上,这仍将节省大量时间。如何修改它,以便也可以选择单个行? 为了使缩放窗口捕捉到端点,我想您可以使用以下方法:
(defun c:zw ()
(setq pt1 (getpoint "\nSelect First Window Point: "))
(setq pt1 (osnap pt1 "_endp"))
(setq pt2 (getpoint "\nSelect Second Window Point: "))
(setq pt2 (osnap pt2 "_endp"))
(command "zoom"
"w"
pt1
pt2
) ; end zoom
(princ)
) ; end program
但这并不理想。
对于多段线宽度转换,我提供的LISP应该可以让您选择一条直线,但如果不是所需的,那么我恐怕不知道如何创建这样的LISP 这里有一个选择。
(defun c:zw () (setvar "cmdecho" 0) (command "zoom" "w" "_end" pause "_end" pause ) 我更喜欢这个。
(defun c:zw (/ pt1 pt2)
(if
(and
(setq pt1 (getpoint "\nSelect First Window Point: "))
(setq pt1 (osnap pt1 "_end"))
(setq pt2 (getpoint "\nSelect Second Window Point: "))
(setq pt2 (osnap pt2 "_end"))
)
(command "._zoom" "_w" "_non" pt1 "_non" pt2) ; end zoom
)
(princ)
) ; end program 也许这是厚度:
(defun c:changeThickness (/ ss tk)
(prompt "\nSelect objects to change thickness:")
(if
(and
(setq ss (ssget))
(setq tk (getdist "\nEnter a new thickness:"))
)
(command "._change" ss "" "_P" "_T" tk "")
)
(princ)
)
只是一些想法。 感谢您的输入CAB,我不知道如何在暂停之前放置“端点捕捉”并仍然使程序正常工作,因此我决定放置点选择并在缩放命令中使用点。
但至于厚度,我使用了“ssget”语法(和你一样),但我不确定新手是否喜欢类似于“entsel”选择选取框的选择。。。 是的。
(defun c:changeThickness (/ ent obj tk)
(setvar "ErrNo" 0) ; reset variable
(if (setq tk (getdist "\nEnter a new thickness:"))
(while
(cond
((and (null(setq ent (car (entsel "\nSelect object to change thickness:"))))
(= 52 (getvar "ErrNo"))) ; <Enter> was hit
(prompt "\nUser Quit.") ; Bye bye
)
((null ent)
(princ "\nMissed, Try Again.")
)
((null (vlax-property-available-p
(setq obj (vlax-ename->vla-object ent))
'Thickness t))
(princ "\nNo Thickness or locked layer. Try Again.")
)
(t ; OK to update
(vla-put-thickness obj tk)
(princ "\nThickness updated.")
)
)
)
)
(princ)
) 非常感谢。
这将是一个很大的帮助
页:
[1]