rkent 发表于 2022-7-6 08:03:18

线的偏移部分

几年前,我拼凑出了这个lisp,基本上只是抵消了一条线的一部分,并希望能做得更好。
 
错误陷阱似乎不起作用。
我想将其更改为拾取对象的一层,或者稍后指定另一层。
我想可以把它清理干净,但我不确定先把重点放在哪里。
 
 
;OffsetMeasureoffset a short line
(defun *error* (msg)
(setvar "osmode" 0)
   (setq pt1 nil)
   (setq pt2 nil)
   (setq dist1 nil)
   (setq *seqpt nil)
(princ "\n\n\nLeaving OM lisp routine, good day sir!\n")
(princ)
)
(defun C:OM (/ pt1 pt2 dist1 srt)
(setvar "cmdecho" 0)
(setq srt (getvar "sortents"))
(setvar "sortents" 3)
(graphscr)
(setq d "T")
   (while d
   (if (not *seqpt)(setq *seqpt 1.0))
   (princ "\nEnter Distance For Offset <")
   (princ *seqpt)
   (setq dist1 (getdist ">: ")
   )
(setvar "osmode" 512)
   (setq pt1 (getpoint "\nPick point on object :")
         pt2 (getpoint "\nSecond point :")
       )
   (if (not dist1)(setq dist1 *seqpt)(setq *seqpt dist1)
)
(setvar "osmode" 0)
(command ".line" pt1 pt2 "")
   (princ "\nSide to offset")
(command ".offset" dist1 pt1 pause ""
         ".erase" pt1 ""
         ".move" pt1 "" "@" "@")
(setq d1 (strcase (getstring "\nPress RETURN to continue or X to
quit ")))
(if (= d1 "X")(setq d nil))
)
(setvar "sortents" srt)
   (princ)
)
 
任何帮助都将不胜感激。给我指出一个方向,或者为我做这一切,我没有偏好。
 
rkent公司

BlackBox 发表于 2022-7-6 08:26:18

在只浏览了代码之后,考虑将临时的*error*defun嵌套在主代码(c:OM)中,并确保本地化符号,以便在主代码完成后恢复原始的*error*定义。伪代码:
 
(defun c:OM(/*错误*;|其他变量|)(defun*错误*(msg);;

rkent 发表于 2022-7-6 08:39:05

Renderman,成功了!谢谢,rkent

Lee Mac 发表于 2022-7-6 08:39:36

rkent,
 
也许我的本教程有助于理解:
 
http://lee-mac.com/errorhandling.html

BlackBox 发表于 2022-7-6 08:54:42

 
@Rkent-很乐意帮忙。
 
@李-写得很好的教程,我的朋友。

Lee Mac 发表于 2022-7-6 09:14:32

谢谢伙计
页: [1]
查看完整版本: 线的偏移部分