建筑新时代论坛's Archiver

【热门搜索】建材Autocad膜结构钢结构加固招聘工程机械测绘建筑材料工程造价建筑施工图

wanglin 发表于 2007-9-2 18:16

Fw: 关于Visual LISP的问题

[b]原始短消息[/b] [url=http://www.drafting.cn/bbs/pm.php?action=send&pmid=7447&do=reply](回复)[/url]
[b]来自:[/b] [url=http://www.drafting.cn/bbs/space.php?uid=9158]wlzhyct[/url]
[b]发送到:[/b] [url=http://www.drafting.cn/bbs/space.php?uid=7779]wanglin[/url]
[b]时间:[/b] 2007-8-27 03:32 PM

[quote]你好!
我用的是AutoCAD2005。在使用Visual LISP开发的命令时,发现存在不稳定的情况。例如:

(
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        ;-----六角
        defun C:PartHex()

        ;-----输入外部参数
        ( setq val_size ( getreal "请输入对边尺寸:" ) )
        ( setq val_height ( getreal "请输入长度:" ) )
        ( setq p_center ( getpoint "请输入中心:" ) )

        ;-----计算端点并画线
        ;----------四周轮廓线
        ( setq p_1 ( list (- (car p_center) (/ val_size 2)) (cadr p_center) ) )
        ( setq p_4 ( list (+ (car p_center) (/ val_size 2)) (cadr p_center) ) )
        ( setq p_2 ( list (- (car p_center) (/ val_size 2)) (- (cadr p_center) val_height) ) )
        ( setq p_3 ( list (+ (car p_center) (/ val_size 2)) (- (cadr p_center) val_height) ) )

        ( command "_line" p_1 p_2 p_3 p_4 "close" )

        ;----------棱角线
        ( setq p_l_1 ( list (- (car p_center) (/ val_size 4)) (cadr p_center) ) )
        ( setq p_l_4 ( list (+ (car p_center) (/ val_size 4)) (cadr p_center) ) )
        ( setq p_l_2 ( list (- (car p_center) (/ val_size 4)) (- (cadr p_center) val_height) ) )
        ( setq p_l_3 ( list (+ (car p_center) (/ val_size 4)) (- (cadr p_center) val_height) ) )

        ( command "_line" p_l_1 p_l_2 nil )
        ( command "_line" p_l_3 p_l_4 nil )

        ;-----end of defun C:PartHex()
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
)

输入相关参数:
        ( setq val_size ( getreal "请输入对边尺寸:" ) )     ;-----22
        ( setq val_height ( getreal "请输入长度:" ) )       ;-----10
        ( setq p_center ( getpoint "请输入中心:" ) )      ;-----10,10

在调试过程监控每个参数都是正常的
p_1=(-1.0 10.0)
p_2=(-1.0 0.0)
p_3=(21.0 0.0)
p_4=(21.0 10.0)
p_l_1=(4.5 10.0)
p_l_2=(4.5 0.0)
p_l_3=(15.5 0.0)
p_l_4=(15.5 10.0)

但实际画出的图形,
        ( command "_line" p_l_1 p_l_2 nil )
        ( command "_line" p_l_3 p_l_4 nil )
这两条线却与 p_1-p_2 p_3-p_4 重合。

请问这是为什么?谢谢!

ww822 发表于 2007-9-4 21:39

绘图之前应该读取“捕捉”“单位”等信息,并保存在变量中,同时设置自己的需要的参数。绘图完成后恢复原来的变量。

jize1980 发表于 2007-9-8 16:35

我没有细看你的程序
首先看坐标有没有错误的地方,
然后把    ( command "_line" p_l_1 p_l_2 nil )改为    ( command "_line" p_l_1 p_l_2 "c")试一下

jize1980 发表于 2007-9-8 16:50

我又看了一下,
( setq val_height ( getreal "请输入长度:" ) )这句修改为

( setq val_height (getdist getreal "请输入长度:" ) )是不是更完善一点
等一下帮你调试一下再说

wanglin 发表于 2007-9-23 16:18

谢谢大哥的指点!:handshake :handshake :D :D

brainstorm 发表于 2008-9-13 11:47

[quote]原帖由 [i]jize1980[/i] 于 2007-9-8 16:50 发表 [url=http://bbs.jzcad.com/redirect.php?goto=findpost&pid=231379&ptid=36002][img]http://bbs.jzcad.com/images/common/back.gif[/img][/url]
我又看了一下,
( setq val_height ( getreal "请输入长度:" ) )这句修改为

( setq val_height (getdist getreal "请输入长度:" ) )是不是更完善一点
等一下帮你调试一下再说 [/quote]

直接 (setq val_height (getdist "\n请输入长度:"))就行了

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.