明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2299|回复: 12

[已解答] 大师们方便帮看一下这个标注程序错在哪里吗?

[复制链接]
发表于 2014-11-8 12:05:56 | 显示全部楼层 |阅读模式
方便帮看一下这个错在哪里吗?

(defun c:`q();线性
(setq pt1 (getpoint "\n请指定标注起点:"))
(if (ssget pt1)
(setq pt2 (getpoint pt1"\n请指定标注终点:"))
(if (ssget pt2)
(command"dimlinear" pt1 pt2)
))
(princ))
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2014-11-8 12:22:24 | 显示全部楼层
(defun c:test();
(setq pt1 (getpoint "\n指定標註起點:"))
(if pt1
   (progn
     (setq pt2 (getpoint pt1 "\n指定標註終點:"))
     (if pt2
       (command"dimlinear" pt1 pt2 pause)
     )
   )  
)
(princ)
)
 楼主| 发表于 2014-11-8 12:40:16 | 显示全部楼层
lsjj 发表于 2014-11-8 12:22
(defun c:test();
(setq pt1 (getpoint "\n指定標註起點:"))
(if pt1

首先非常感谢您的回复。我的目的是为了防止标注点不落在物体上,所以用(if (ssget pt1),,,(if (ssget pt2),,也不知道是否可以这样用
 楼主| 发表于 2014-11-8 12:51:32 | 显示全部楼层
lsjj 发表于 2014-11-8 12:22
(defun c:test();
(setq pt1 (getpoint "\n指定標註起點:"))
(if pt1

搞定了,谢谢
(defun c:`q();线性
(setq pt1 (getpoint "\n请指定标注起点:"))
(if (ssget pt1)
(progn
(setq pt2 (getpoint pt1 "\n请指定标注终点:"))
(if (ssget pt2)
(command"dimlinear" pt1 pt2 pause)
)))
(princ))

如果第二点不在物体上就提示继续点第二点,要怎么改呢?
发表于 2014-11-8 13:05:12 | 显示全部楼层
(while (not (ssget pt2))...
发表于 2014-11-8 13:10:59 | 显示全部楼层
(nentselp pt)相当于点选, (ssget pt)范围太小!
试试这样是否可以!
(WHILE (SSGET (setq pt2 (getpoint pt1 "\n请指定标注终点:")))
(command"dimlinear" pt1 pt2 pause)
)
发表于 2014-11-8 14:19:24 | 显示全部楼层
669423907 发表于 2014-11-8 12:51
搞定了,谢谢
(defun c:`q();线性
(setq pt1 (getpoint "\n请指定标注起点:"))

cad本身就有线性标注,何必再写?
 楼主| 发表于 2014-11-8 21:06:32 | 显示全部楼层
香田里浪人 发表于 2014-11-8 14:19
cad本身就有线性标注,何必再写?

防止空标,就是不能在没有图元的地方标注
 楼主| 发表于 2014-11-8 21:07:43 | 显示全部楼层
wowan1314 发表于 2014-11-8 13:10
(nentselp pt)相当于点选, (ssget pt)范围太小!
试试这样是否可以!
(WHILE (SSGET (setq pt2 (get ...

1314大师,那样变成基线标注了
 楼主| 发表于 2014-11-8 21:13:35 | 显示全部楼层
lsjj 发表于 2014-11-8 13:05
(while (not (ssget pt2))...

lsjj大师,方便帮添加进去吗?我弄不出来了。谢谢

(defun c:`q();线性
(setq bz? (getpoint "\n左键标两点,右键选线"))
(setq gbwz (grread 3));光标位置
(if (member (car gbwz) '(3 5))
(setq od (cadr gbwz)));鼠标位置
(if bz?
(bz)
(bzz)
)
(princ))

(defun bz()
(if (ssget od)(progn
(setq pt2 (getpoint od "\n请指定标注终点:"))
(if (ssget pt2)
(progn
(command"dimlinear" od pt2 pause)
(while (= 1 (getvar "cmdactive"))(command pause))
(c:`q)))))
(princ))

(defun bzz()
(command"dimlinear""")
(while (= 1 (getvar "cmdactive"))(command pause))
(c:`q)
(princ))

如果第二点不在图元上,就不断重复第二点,直到第二点落在图元上时,才继续运行后面的内容
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-23 21:03 , Processed in 0.287530 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表