电气本垒打Lisp
大家好。我正在使用AutoCAD 2016,我正在尝试使用下面的Homerun lisp,但没有成功。其他使用旧版本CAD的用户可以使用。我希望这个网站上有人能帮我找到解决方法。
(定义C:HR(/ORTM P1 P2 P3 AR AL RA P4 AN2 AN3 A3 AN P5 AN4 AR1)
(SETQ ORTM(GETVAR“正交模式”))
(SETVAR“ORTHOMODE”0)
(提示“\n点击开始点”)
(SETQ P1(GETPOINT))
(提示“\n点击箭头”)
(SETQ P2(GETPOINT))
(命令“ARC”P1“E”P2“D”暂停)
(SETQ P3(OSNAP P1“QUI,MID”))
(SETQ AR(ENTLAST))
(SETQ AL(ENTGET(ENTLAST)))
(SETQ RA(CDR(ASSOC 40 AL)))
(SETQ P4(CDR(ASSOC 10 AL)))
(SETQ AN2(角度P4 P2))
(SETQ AN3(角度P4 P3))
(SETQ A3(角度P4 P3))
(SETQ AN(角度P1 P2))
(条件
((或(>AN(*PI 1.5))(
(如果(和(>A3 0.0)(
(SETQ AN2(角度P4 P2))
(SETQ AN2(角度P2 P4))
)
)
((和(AN(*PI 0.5));;;进行了修改
(如果(和(>A3 0.0)(
(SETQ AN2(角度P2 P4))
(SETQ AN2(角度P4 P2))
)
)
)
(SETQ P5(极性P2(+AN2(*PI 0.5))(*0.15(GETVAR“DIMSCALE”)))
(SETQ AN4(角度P4 P5))
(SETQ P5(极性P4 AN4 RA))
(命令“PLINE”P2“W”“0”(*0.06(GETVAR“DIMSCALE”))P5“W”“0”“0”P2“”)
(SETQ AR1(ENTLAST))
(命令“PEDIT”AR“Y”“J”AR1”““X”)
(setq ar(entlast))
(SETVAR“正交模式”ortm)
) 以后请正确张贴代码。抛出了什么错误消息? 很抱歉粘贴不好。
我得到的错误是:
指定圆弧的中心点(按住Ctrl键切换方向)或[角度/方向/半径]:D
指定圆弧起点的切线方向(按住Ctrl键切换方向):
命令:;错误:错误的参数类型:2D/3D点:nil
我试着用vlisp调试它,但似乎在线上失败了:
(SETQ AN3(角度P4 P3)) osnap是一个保留字,lisp在这里寻找defun
(SETQ P3 (OSNAP P1 "QUI,MID")) ;wrong
(SETQ P3 (GETPOINT P1 "QUI,MID")) ;works
谢谢你,比格尔,但我一定做错了什么。
我替换了
(SETQ P3(OSNAP P1“QUI,MID”))
具有
(SETQ P3(获取点P1“QUI,MID”))
但还是没有运气。你能在2016年ACAD上试试吗? 比格尔,这是错误的:
(setq p3(获取点p1“QUI,MID”))
由于点后字符串规范仅表示消息,而不表示OSNAP-s。。。相反,尝试在调用(getpoint)之前设置(setvar'OSMODE num),或直接在(getpoint)之前使用命令设置OSNAP-s:(命令“_.OSNAP”“QUI,MID”)
M、 R。 谢谢你,M.R。
我不擅长lisp,所以我不确定您是如何修改lisp的。
你介意在修改的部分之前和之后张贴一个帖子吗? (SETQ P3 (OSNAP P1 "QUI,MID"))
如果p1是可以从当前拾取框孔径大小中提取中点的实体上的有效点列表,则应可行。否则(osnap)将返回nil,并应将“错误:错误参数类型:2D/3D点:nil”返回给任何需要点列表值参数的函数。ie(角度)
-达武德 只要用另一种方法得到你的中点。
这里有一种方法:
(DEFUN C:HR (/ ORTM P1 P2 P3 AR AL RA P4 AN2 AN3 A3 AN P5 AN4 AR1)
(SETQ ORTM (GETVAR "ORTHOMODE"))
(SETVAR "ORTHOMODE" 0)
(PROMPT "\nPICK POINT TO START FROM")
(SETQ P1 (GETPOINT))
(PROMPT "\nPICK POINT FOR ARROW HEAD")
(SETQ P2 (GETPOINT))
(COMMAND "ARC" P1 "E" P2 "D" PAUSE)
(SETQ P3 (POLAR P1 (ANGLE P1 P2)(/ (DISTANCE P1 P2) 2.0)))
;(SETQ P3 (OSNAP P1 "QUI,MID"))
(SETQ AR (ENTLAST))
(SETQ AL (ENTGET(ENTLAST)))
(SETQ RA (CDR (ASSOC 40 AL)))
(SETQ P4 (CDR (ASSOC 10 AL)))
(SETQ AN2 (ANGLE P4 P2))
(SETQ AN3 (ANGLE P4 P3))
(SETQ A3 (ANGLE P4 P3))
(SETQ AN (ANGLE P1 P2))
(COND
((OR (> AN (* PI 1.5)) (< AN (* PI 0.5)))
(IF (AND (> A3 0.0) (< A3 PI))
(SETQ AN2 (ANGLE P4 P2))
(SETQ AN2 (ANGLE P2 P4))
)
)
((AND (< AN (* PI 1.5)) (> AN (* PI 0.5))) ;;;Modifications were done
(IF (AND (> A3 0.0) (< A3 PI)) ;;;here
(SETQ AN2 (ANGLE P2 P4))
(SETQ AN2 (ANGLE P4 P2))
)
)
)
(SETQ P5 (POLAR P2 (+ AN2 (* PI 0.5)) (* 0.15 (GETVAR "DIMSCALE"))))
(SETQ AN4 (ANGLE P4 P5))
(SETQ P5 (POLAR P4 AN4 RA))
(COMMAND "PLINE" P2 "W" "0" (* 0.06 (GETVAR "DIMSCALE")) P5 "W" "0" "0" P2 "")
(SETQ AR1 (ENTLAST))
(COMMAND "PEDIT" AR "Y" "J" AR1 "" "X")
(setq ar(entlast))
(SETVAR "ORTHOMODE" ortm)
) jvillarreal你太棒了!!!!非常感谢你。该脚本在ACAD 2016中运行良好。你再次摇滚!!!
页:
[1]
2