作者phragmite (Θ.Θ)
看板Cad_Cae
标题[心得] AutoCAD 物件锁点之鬼打墙事件…
时间Fri Oct 2 21:34:49 2009
仍在迷惑当中的新手一点小小心得:
这篇文章原本是要来求助的,不过字打着打着,想起高老师有句原本让我
以为无关紧要的话…一个动作,问题解决了八成。故事是这样的:一星期
前三小时的课让人了解到在 acad 中使用 lisp、script 配合高阶语言的
魅力,所以赶紧买了书回来看。可是才刚练习写个简单的中心线的程式,
马上就遇到鬼打墙。有兴趣往下看的板友,可以先载入程式试试看。原先
用意是想在点击圆後可以画出突出圆周2单位长的十字线:
(defun c:cline(/ dat rad cpt len ept wpt spt npt)
(setvar "cmdecho" 0)
(setq dat (entget (car (entsel "\nSelect a circle to draw centerlines..."))))
(setq rad (cdr (assoc 40 dat)))
(setq cpt (cdr (assoc 10 dat)))
(setq rad (+ rad 2))
; ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄here is still in modifying by ph.
(setq ept (polar cpt 0 rad))
(setq wpt (polar cpt pi rad))
(setq spt (polar cpt (* pi 1.5) rad))
(setq npt (polar cpt (* pi 0.5) rad))
(command "line" ept wpt "" "line" spt npt "")
(prin1)
)
仔细检查过一切ok,可是执行的时侯却只看到圆心上一个光点,并且回应
讯息:「建立了长度为零的线」。我取消区域变数宣告,把每个变数值都
查过了,想破了头还是找不出问题。更离奇的是若在命令列下:
(command "line" '(0 0 0) ept) 或 (command "circle" wpt [任意值])
原本以为会出现在 ept wpt spt npt位置的,变成跑到圆心位置上。最後
索性把底线那一行改成 (setq rad (* rad 1.4)) 居然就可以执行。
用加的不行、用乘的就可以,一点道理也没有…。忽然想起 sjgau 说过:
「有很多错误都是因为物件锁点使用不当造成的」看见我的物件锁点果然
开着,半信半疑地按了F3……BINGO!!! 虽然现在还是不晓得为什麽选了
锁中心点会产生这样的结果、也不晓得为什麽用乘的就可以执行,不过就
问题本身而言算是解决了。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.228.196.149
※ 编辑: phragmite 来自: 61.228.196.149 (10/02 22:00)