lisp时而出错时而有效,求高手帮忙看下程序
各位高手,本人结构专业,初学lisp。 我们结构上画次梁要求起点和终点都是一个小圆圈,中间是一段有厚度的多义线(通常50厚)。 如附图,要在A点为左边直线上任意一点,B为右边直线任意一点,要求程序实现直接点AB两点后,就出现中间的次梁(次梁可能为斜的)。
本人编的程序代码如下:
(DEFUN C:Ci(/ aaa bbb r w p0 p1 c0 c1 a l1 l2)
(vl-load-com)
(setq aaa (vlax-ldata-get "dict" "R"))
(setq bbb (vlax-ldata-get "dict" "W"))
(if (= nil aaa)(setq aaa 50))
(if (= nil bbb)(setq bbb 50))
(setq R aaa)
(setq W bbb)
(princ (strcat "\n当前铰接圆半径<" (RTOS R) ">,多段线线宽<" (RTOS W) ">"))
(SETVAR "CMDECHO" 0)
(GRAPHSCR)
(INITGET "R W")
(WHILE (ATOM(SETQ P0 (GETPOINT "\n输入次梁起点或[铰接圆半径(R)/线宽(W)]:")))
(IF (= P0 "R")
(SETQ R (GETREAL (STRCAT "\n输入铰接圆半径<" (RTOS R) ">")))
)
(IF (= R NIL)(SETQ R aaa)
(vlax-ldata-put "dict" "R" R)
)
(IF (= P0 "W")
(SETQ W (GETREAL (STRCAT "\n输入次梁多段线宽度<" (RTOS W) ">")))
)
(IF (= W NIL)(SETQ W bbb)
(vlax-ldata-put "dict" "W" W)
)
(INITGET "R W")
)
(SETQ P1 (GETPOINT "\n输入次梁终点:"))
(SETQ A (ANGLE P0 P1))
(SETQ C0 (POLAR P0 A R))
(SETQ C1 (POLAR P1 (+ A PI) R))
(SETQ L0 (POLAR C0 A R))
(SETQ L1 (POLAR C1 (+ A PI) R))
(COMMAND "CIRCLE" C0 R)
(COMMAND "CIRCLE" C1 R)
(COMMAND "PLINE" L0 L1 "")
(COMMAND "PEDIT" "L" "W" W "")
(SETVAR "CMDECHO" 1)
(PRINC)
)
我的程序编完之后,曾经调试没有什么问题,能达到我的要求。 但是现在不知道为什么,如果不开捕捉,画出来的东西满足要求,一旦开了捕捉,左右两边的小圆圈就总是有一个或两个不能和直线相切,圆心就直接在直线上,
跪求高手指导。
明经的各位高手阿,求你们快快现身吧,我要画一个网架,里面上千跟杆件,全是次杆.没这个程序要完蛋了. lisp 程序设计,发到 lisp板块 更合适有效吧 内容自动屏蔽,看不到 回复 longer1000 的帖子
现在已向版主申请解禁了,求高手帮忙看看程序的问题,无比感谢。 http://bbs.mjtd.com/thread-88483-1-1.html 就是捕捉出的问题,如果你开捕捉,则你指定的点与你得到的点可能不是同一个点,所以你必须关闭他,保证你指定的点与你得到的点是同一点。 回复 Andyhon 的帖子
长老您好,感谢您的指点。您的意思我明白,但是我这个程序在使用时是必须要开捕捉的,开了捕捉就出错。但如果不开捕捉,又找不到我想要的点,只能用鼠标描我想要的点才能达到我想要的效果,但这样是不现实的阿。
求长老百忙之中抽空给小弟指点一下,不甚感激。 回复 winabcd 的帖子
谢谢您的指点,我是个非常业余的lisp初学者,没太明白您的意思。请问如果不开捕捉,我怎么精确找到我想要的点呢? (SETQ L1 (POLAR C1 (+ A PI) R))
(COMMAND "CIRCLE" C0 R)
==>
(SETQ L1 (POLAR C1 (+ A PI) R))
(setvar "OsMode" 0) ; 本例在这儿关闭捕捉 只对其后的语句起作用
(COMMAND "CIRCLE" C0 R)
or ===========================>
(SETQ L1 (POLAR C1 (+ A PI) R))
(COMMAND "CIRCLE" C0 R)
==>
(SETQ L1 (POLAR C1 (+ A PI) R))
;; 也可以 直接屏蔽
(COMMAND "CIRCLE" "non" C0 R)
下同
程序相关最好转向 开发篇 的版块
页:
[1]
2