明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1287|回复: 6

请教一个小程序的修改

[复制链接]
发表于 2005-4-5 15:33 | 显示全部楼层 |阅读模式
我这里有个小程序,是用来标注倒角的,在标注时,PT4点常常不稳定,原意是要取直线的中点,但实际使用中经常出现PT4点取到了与倒角相距很远的一点,麻烦各位高手帮我看看什么地方出了问题: (defun C:DC()
(SETVAR "CMDECHO" 0)
;(SETQ OLDOS (GETVAR "OSMODE"))
(SETQ OLDZIN (GETVAR "DIMZIN"))
(SETVAR "DIMZIN" 1)
;(SETVAR "OSMODE" 0)
(command "osmode" "0")
(SETVAR "ORTHOMODE" 0)
(COMMAND "-LAYER" "m" "DIM" "" "")
(PRINC "\nPlease Select a Line :")

(iF (SETQ SS (ENTSEL))
;(IF (SETQ SS (ssget)) (SETQ DL (car SS)
;dp (cdr ss)
;p4 (cadr (assoc 10 (entget dp)))
Pt1 (CDR (ASSOC 10 (entget DL)))
Pt2 (CDR (ASSOC 11 (entget DL)))
X (ABS (- (CAR Pt1) (CAR Pt2)))
Y (ABS (- (CADR Pt1) (CADR Pt2)))
)
) (princ "\nthe quality of chamfers<1>:")
(setq cq (getstring))
(if (/= cq "")
(setq cq (strcat cq "-C"))
)
(if (= cq "")
(setq cq "C")
)
(IF (EQUAL X Y 1E-4)
(PROGN
(PRINC "\nthe chamfer size<")
(PRINC (RTOS X 2 1))
(SETQ TT (GETSTRING "> :"))
(SETQ TT (IF (= TT "")
(RTOS X 2 1)
))
(SETQ TT (STRCAT cq TT))
(SETQ Pt4 (POLAR Pt1 (ANGLE Pt1 Pt2) (* (DISTANCE Pt1 Pt2) 0.5))

)
(IF (SETQ Pt3 (GETPOINT Pt4 "\nText Point ? "))
(PROGN
(COMMAND "LEADER" Pt4 Pt3 "" "" "" TT "")
)
)
)
)
(SETVAR "DIMZIN" OLDZIN)
;(SETVAR "OSMODE" OLDOS)
(SETVAR "CMDECHO" 1)
(SETVAR "ORTHOMODE" 1)
(PRINC)
)
发表于 2005-4-5 15:56 | 显示全部楼层
只要osmode参数设定为0,那是不可能会影响pt4值。楼主你再仔细核对一下。至少我运行没什么大问题。
 楼主| 发表于 2005-4-5 17:11 | 显示全部楼层
我运行的情况大概是这样的,通常新建的文件中运行正常,但如果是2002的文件用2004修改中使用该标注,就会出错;出错时PT4点仿佛是与PT1,PT2无关而被固定在某一点.而工作中恰恰要经常修改2002的文件.


请各位高手指点,一定是一个不引人注意的地方出了漏洞.
发表于 2005-4-5 17:46 | 显示全部楼层
(command "osmode" "0")换成(setvar "OSMODE" 0)试试
 楼主| 发表于 2005-4-6 11:52 | 显示全部楼层
我又调试了这个程序,发现当出错的时候,PT1和PT2的值已经出了问题; 我想是不是ENTGET函数返回的值是OCS坐标系的有关系.


请教如何将OCS的值转变为UCS中的值.或者如何删去OCS


将(command "osmode" "0") 换成(setvar "osmode" 0)试过了没有什么用
发表于 2005-4-6 12:18 | 显示全部楼层
我知道了,是世界坐标系与用户坐标系造成结果不一样,在程序部份加入


(command "ucs" "w"),相当于在运行程序时,是在世界坐标系里执行操作。我测试发现不管用户坐标系如何变化,用(entget(car (entsel)))取得的数据是一样,说明pt4的坐标是相对于世界坐标系值,当用在用户坐标系执行该程序时,pt4点就会“跑”到很远的地方。
 楼主| 发表于 2005-4-10 10:59 | 显示全部楼层
非常感谢楼上的兄弟,确实是UCS的问题,我的问题解决了.特献鲜花一朵
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-3 03:08 , Processed in 0.433912 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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