明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: wdq

粗糙度符号标注求助!!!!

  [复制链接]
 楼主| 发表于 2004-3-16 19:05:00 | 显示全部楼层
非常感谢独角斗士 !!谢谢!!!


       


鄙视那个收费的家伙呵呵!!
发表于 2004-3-16 19:35:00 | 显示全部楼层
非常感谢独角斗士先生!但我们不应该也没有理由鄙视那个收费的家伙,毕竟编写程序也需要付出劳动,获取一定的报酬是无可非议的。
发表于 2004-3-17 08:58:00 | 显示全部楼层
独角斗士:你好,你的这个程序中符号和数字是同样的颜色,我习惯的用法是符号和数字是采用不同的颜色,比如:符号用的是青色、数字用的是绿色,要是有这样的效果,要怎么修改程序?请赐教!
发表于 2004-3-17 11:08:00 | 显示全部楼层
改好了,请试用。 比较一下二个程序的差别就知道其原理了,我稍微解释一下 if (null (tblsearch "LAYER" "CCD-SYB"))
(command "_layer" "_m" "CCD-SYB" "_c" 4 ""
"_lt" "continuous" "" "")
)
如果没有CCD-SYB这个图层,则创建一个,层名:CCD-SYB,颜色:4号,线型:实线 当然如果已有就不重复创建,这样,如果不希望颜色为4号的话可以不修改程序,只要重新定义这个CCD-SYB图层的定义。 (command "_.layer" "S" "CCD-SYB" "")
把CCD-SYB设置为当前层,明白其原理了吧,象这样的程序无非就是命令的批处理而已。 源程序如下: ; --------------------------------------------------------- (defun ccd_err(s)
(if (/= s "Function cancelled")
(princ (strcat "\nError: " s))
)
(setvar "osmode" os)
(setvar "CLAYER" clay)
(setvar "TEXTSTYLE" ttp)
(command "_.UNDO" "_E")
) ;==================== Main program ======================== (defun c:ccd (/ os clay ttp pt1 sa sh scl pt2 pt3 pt4 pt5 ww )
(setq *error* ccd_err)
(setq os (getvar "osmode")
clay (getvar "CLAYER")
ttp (getvar "TEXTSTYLE"))
(if (null (tblsearch "LAYER" "CCD-SYB"))
(command "_layer" "_m" "CCD-SYB" "_c" 4 ""
"_lt" "continuous" "" "")
)
(if (null (tblsearch "LAYER" "CCD-NOTE"))
(command "_layer" "_m" "CCD-NOTE" "_c" 3 "" "")
) (command "_style" "romans" "romans.shx" "" "0.9" "" "" "" "")
(setvar "osmode" 512)
(setq pt1 (getpoint "\n放置位置: ")
sa (getangle pt1 "\n角度(可以选择点决定角度):")
scl (getvar "DIMSCALE")
)
(if (= scl 0.0) (setq scl 1.0))
(setq pt2 (polar pt1 (+ (/ pi 3.0) sa) (* scl 7.5))
pt3 (polar pt1 (+ (/ pi 3.0) sa) (* scl 4.0))
pt4 (polar pt3 (+ pi sa) (* scl 4.0))
pt5 (polar pt1 (+ (/ pi 2.0) sa) (* scl 5.0)))
(setvar "osmode" 0)
(command "_.layer" "S" "CCD-SYB" "")
(command "pline" pt2 "w" "0.0" "" pt1 pt4 pt3 "") (if (and (> sa (* pi 0.5)) (< sa (* pi 1.5))) (setq sa (- sa pi)))
(setq ww (getstring (strcat "\n粗糙度(1.6,3.2,6.3, 12.5,25) < 6.3 > : ")))
(if (= "" ww) (setq ww "6.3"))
(setq sa (* sa (/ 180 pi)))
(command "_.layer" "S" "CCD-NOTE" "")
(command "_.text" "_middle" pt5 (* scl 2.0) sa ww)
(setvar "osmode" os)
(setvar "CLAYER" clay)
(setvar "TEXTSTYLE" ttp)
(princ)
)
;==============================================================
发表于 2004-3-17 11:34:00 | 显示全部楼层
谢谢,非常感谢,
 楼主| 发表于 2004-3-17 12:47:00 | 显示全部楼层
收费是要靠公司单位用户,靠收个人用户的钱,可能吗?腾讯都没成功,盛大靠骗小孩的钱,我想个人用户不可能缴费的。
发表于 2004-3-21 11:39:00 | 显示全部楼层
16楼的程序不错,但标注在当前层不太好,程序中应可以设置图层。
发表于 2004-3-21 23:36:00 | 显示全部楼层
独角斗士先生:



您的程序我试用的,但尚存在以下一些问题:


1、您的程序只能标注向上和向右的粗糙度,而不能标注向下和向左的粗糙度。


2、标注向右的粗糙度时文字方向反了,按照国家标准的规定,文字应该是向左的。


3、标注时应该要提示标注在线的哪一侧。


4、标注时应该能够指定比例。


也许是我还不会用您的程序的原因,请您指教。




本帖子中包含更多资源

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

x
发表于 2004-3-22 00:50:00 | 显示全部楼层
你提的问题在程序中考虑了。 第1、2、3问题请看 (getangle pt1 "\n角度(可以选择点决定角度):") ,那就是要你输入角度的,如果第二点在第一点的左边,等于输入了180度,它就能反过来了,其他角度一样道理,请看我在12楼的演示。 第4个问题请看 scl (getvar "DIMSCALE") ,这是我的习惯,主图比例1:N的话,LTSCALE=DIMSCALE=N。 回27楼:改变当前层只是为了加入对象,程序结束前会恢复原来的当前图层,见 (setvar "CLAYER" clay),即原来当前层是XXXX层,程序执行完后还是XXXX层,用户是感觉不出图层变化的。
发表于 2004-3-22 01:06:00 | 显示全部楼层
明白了,谢谢您的指教,只是第二个问题仍然存在,就是对竖直线的标注,向右的粗糙度符号的文字仍然是向右的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-26 08:49 , Processed in 0.157446 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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