结构工程画次梁的lisp程序,一开捕捉F3就不能用了,求指导

[复制链接]
查看11 | 回复1 | 2011-8-1 15:40:02 | 显示全部楼层 |阅读模式
各位高手,本人结构专业,初学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当前铰接圆半径,多段线线宽"))
(SETVAR "CMDECHO" 0)
(GRAPHSCR)
(INITGET "R W")
(WHILE (ATOM(SETQ P0 (GETPOINT "\n输入次梁起点或[铰接圆半径(R)/线宽(W)]:")))
(IF (= P0 "R")
(SETQ R (GETREAL (STRCAT "\n输入铰接圆半径")))
)
(IF (= R NIL)(SETQ R aaa)
(vlax-ldata-put "dict" "R" R)
)
(IF (= P0 "W")
(SETQ W (GETREAL (STRCAT "\n输入次梁多段线宽度")))
)
(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)
)
我的程序编完之后,曾经调试没有什么问题,能达到我的要求。 但是现在不知道为什么,如果不开捕捉,画出来的东西满足要求,一旦开了捕捉,左右两边的小圆圈就总是有一个或两个不能和直线相切,圆心就直接在直线上,
跪求高手指导。

回复

使用道具 举报

千问 | 2011-8-1 15:40:02 | 显示全部楼层
程序里把osmode设为0,结束时返回初始值...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行