找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1084|回复: 12

[求助] [求助]:关于圆弧标注的程序请大家指点

[复制链接]
发表于 2004-3-25 21:58:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我不是好明LISP程序,只是找点时间慢慢学下,所以试写一个画出圆弧标注的程序,一边调试一边改,在调试中发现一点问题,想请大家指点指点。
在附件中,有个图形标注是错的。程序如下:
[php]
(defun c:bzhu()
         (setvar "cmdecho" 0)
         (setvar "osmode" 0)
  (setq en (car (entsel "\n:选取弧")))
  (setq endata (entget en))
  (setq r (cdr (assoc 40 endata)))
  (setq ptcen (cdr (assoc 10 endata)));;取得弧的圆心
  (setq anglq (cdr (assoc 50 endata)));;取得弧的起点角
  (setq anglz (cdr (assoc 51 endata)));;取得弧的终点角
  (setq anglx (- anglz anglq));;取得弧的夹角
  (setq anglt (+ anglq (* 0.5 anglx)));;取得弧的中点角
  (setq pt0 (polar ptcen anglt (+ r 15.0)))  ;;取得弧的标注点
  (setq p01 (polar ptcen anglq (+ r 1.5))) ;;取得弧的起点标注点
  (setq p02 (polar ptcen anglz (+ r 1.5))) ;;取得弧的终点标注点
  (setq xxarc (cdr (assoc 0 endata)))
  (if (= xxarc "ARC")
    (if        (<=  anglx (* 0.5 pi))
      (xhu pt0 anglq anglx ptcen p01 p02 anglt)
      ;;;(dhu pt0 anglq anglz ptcen p01 p02)
    )
  )
  (hutxt pt0 en anglt ptcen)
  (setvar "cmdecho" cmd)
  (setvar "osmode" osm)
)
(defun dhu (pt0 anglq anglz ptcen p01 p02)

(defun xhu (pt0 anglq anglx ptcen p01 p02 anglt)
  (setq px1 (polar p01 anglt  1.5));暂定弧的起点标注起点
  (setq px2 (polar p02 anglt 1.5));暂定弧的终点标注起点
  (setq px3 (polar px1 anglt  45.0));暂定弧的起点标注终点
  (setq px4 (polar px2 anglt 45.0));暂定弧的终点标注终点
  (command "line" px1 px3 "");画弧标注引线
  (command "line" px2 px4 "");画弧标注引线
  (setq        pxx1 (inters pt0
                     (polar pt0 (+ anglt (* 0.5 pi)) 1.0)
                     px1
                     px3
                     nil
             )
  )
  (setq        pxx2 (inters pt0
                     pxx1
                     px2
                     px4
                     nil
             )
  )
  (setq xangl (angle pxx1 pxx2))
  (setq pxt1 (polar pxx1 (+ (* 0.75 pi) xangl) 3.5));暂定弧的标注点
  (setq pxt2 (polar pxx1 (- xangl (* 0.25 pi)) 3.5));暂定弧的标注点
  (setq pxt3 (polar pxx2 (+ (* 0.75 pi) xangl) 3.5));暂定弧的标注点
  (setq pxt4 (polar pxx2 (- xangl (* 0.25 pi)) 3.5));暂定弧的标注点
  (command "zoom" "all")
  (command "line" pxt3 pxt4 "");画弧标注线
  (command "line" pxt1 pxt2 "");画弧标注线
  (command "line" pxx1 pxx2 "");画弧标注线

)
(defun hutxt (pt0 en anglt ptcen)
  (command "lengthen" en "")
  (setq dd (rtos (getvar "perimeter") 2))  ;;取得弧长
  (command "text"
           "m"
           (polar pt0 anglt 2.5)
           3.5
           (- anglt (* 0.5 pi))
           dd
  );;标注弧长
  (setq ttxt (entget (entlast)))
  (command "ucs" "e" (entlast))
  (SETQ txtbox (textbox  ttxt))
  (setq p1 (car txtbox))
  (setq p2 (cadr txtbox))
  (setq p3 (list (car p1) (cadr p2)))
  (setq xxx (distance p2 p1))
  (setq p4 (list (+ (car p1) (* 0.02 xxx))  (+ (cadr p2) (* 0.02 xxx))))
  (command "arc"  p3 p4 p2 );;画弧长上括弧
  (command "ucs" "")
)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 488个

财富等级: 日进斗金

发表于 2004-3-26 00:09:36 | 显示全部楼层
(setq anglq (cdr (assoc 50 endata)));;取得弧的起点角
(setq anglz (cdr (assoc 51 endata)));;取得弧的终点角

弧线的角度没那么简单:50 > 51时51 上加 2pi
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-3-26 19:18:39 | 显示全部楼层
多谢aeo的提醒,真的是这样子。这方面知识自己没有认真学习,希望aeo斑竹,能多做点讲授,未知可否?
多谢XDSOFT老大奖励!自己深知过奖了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-4-6 15:51:26 | 显示全部楼层
试用过,可标注弧度值和弧度符号,但没有标注线
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-4-6 18:45:36 | 显示全部楼层
试过2002与2004,没有成功!
命令: BZHU

:选取弧; 错误: no function definition: HUTXT
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 4个

财富等级: 恭喜发财

发表于 2004-4-6 23:08:50 | 显示全部楼层
试试这个可以方便的对圆弧进行轴线标注,圆弧弧长标注,并可以断开,合并
这是其中的一个演示和这个程序的下载
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 4个

财富等级: 恭喜发财

发表于 2004-4-6 23:09:33 | 显示全部楼层
下载1
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 4个

财富等级: 恭喜发财

发表于 2004-4-6 23:10:04 | 显示全部楼层
下载2
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-4-7 13:59:07 | 显示全部楼层
建荣CAD以建筑设计为主,对搞机械的不是很方便,不知是否有高手能把楼主的程序完善起来?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-4-16 18:31:24 | 显示全部楼层
tuger楼主,为什么我安装你的工具后,什么也没有显示.希望你能给我一点启示.
我的E-Mail:zhiwei112233@126.com
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-4-17 17:28:55 | 显示全部楼层
斑竹,我的注册码是:-1935462
能帮我注册一下吗,或者给个注册机什么的好吗?
我的email:daiwenq@sina.com
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 4个

财富等级: 恭喜发财

发表于 2004-4-18 14:02:48 | 显示全部楼层
不会的啊,安装好以后会在桌面上出现一个工具箱的快捷方式

如果自动安装设置出错了你可以参照以下方法手工加载

使用方法:
         1.将本工具解压到任意目录下(如:c:\zxcad)
         2.在菜单-->工具-->系统配置-->文件-->支持文
          件搜索路径中,添加本工具箱的安装目录(c:\zxcad)
         并将其上移到最上端.如下:

         支持文件搜索路径
                    C:\zxcad
                    C:\PROGRAM FILES\AUTOCAD R2002\support
                    C:\PROGRAM FILES\AUTOCAD R2002\fonts
                    C:\PROGRAM FILES\AUTOCAD R2002\help
                    ...........
          3.重新启动R2002,大功告成,其它CAD版本亦同.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-4-19 13:57:52 | 显示全部楼层
这个是我做的测量圆弧弧长的程序
我是利用圆弧标注然后修改文字得到的


[PHP](defun c:yh()
(setq en (entsel "对象: "))
  (setq pt (getpoint "选点: "))
  (command "dimangular" en pt)
  (setq len_data (entget (entlast)))
  (setq old_hc (assoc 1 len_data))
  (command "lengthen" (car en) "")
  (setq l (getvar "perimeter"))  
  (setq new_hc (cons 1 (rtos l 2 2)))
  (setq len_data (subst new_hc old_hc len_data))
  (entmod len_data)
  )  
[/PHP]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-27 05:14 , Processed in 0.223017 second(s), 57 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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