自动序号标注
本帖最后由 iwx007 于 2010-12-21 00:14 编辑我参考http://bbs.hcbbs.com/viewthread.php?tid=362907这个网站的程序,写了一个,横线标注的lisp。
现在问题是:
1.在CAD2006、2008中测试后,都是当图纸放大到一定程度,序号和下划线有间距,这是正常的;但当图纸缩小后,序号就会挨着下划线,十分不解。
2.如何能实现序号自动增加?是不是需要全局变量,这样的变量是在support中的文件里添加吗?还是需要其他的变量声明方式?
3.我用的是“Qleader”做的引线,怎么样能单改这个引线的箭头样式呢,不会影响到图纸中的其他引线?
4.我测试程序后,觉得程序红色部分是不是就是为了,能将"text" p4 txth 0 bx实现?
程序见下:
(defun C:xh(/ LaySc LayIn p1 p2 p3 p4 bx bxh l txth zhan)
(setq txth 5);文字高度
(setq l (* txth 1.4));下划线长度
(setq LayIn (getvar 'clayer))
(if (= nil (setq LaySc (tblsearch "LAYER" "2细实线")));确定是否建立"2细实线"图层
(command "-LAYER" "M" "2细实线" "c" "3" "" "l" "continuous" "" "lw" "0.18" "" "")
)
(if (= nil (setq LaySc (tblsearch "LAYER" "6标注")));确定是否建立"6标注"图层
(command "-LAYER" "M" "6标注" "c" "6" "" "l" "continuous" "" "lw" "0.18" "" "")
)
(setq p1 (getpoint "\n请选择起点:"));在零件上选一点
(setq p2 (getpoint "\n请选择第二点,直接回车表示无第二点"));选择第二点
(setq p3 (polar p2 0 l));文字下划线锚点
(setq p4 (polar p2 1.3 1.5))
(setq bxh (getstring "\n请输入序号" bx));序号数
(setq bx bxh)
(cond (p2
(command "layer" "set" "2细实线" "");改到细线层
(command "qleader" p1 p2 p3 "" " " "");引线
(command "layer" "set" "6标注" "";改到文字层
"text" p4 txth 0 bx);写文字
)
((not p2);如果在零件中标注
(command "layer" "set" "2细实线" "");改到细线层
(command "line" p2 p3 "");文字下划线
(command "layer" "set" "6标注" "";改到文字层
"text" p4 txth 0 bx);写文字
)
)
(command "clayer" LayIn)
(princ)
)
要增加递增语句。。。。。。 回复 461045462 的帖子
递增语句?不懂呢,我把那句删了,就是不能写序号了。有那句,序号还是得人工输入呢。不理解... 回复 461045462 的帖子
还有就是,用什么语言可以实现,我拉引线表序号的时候能够看见效果,就像PCCAD那样标序号? 这是可连续拉序号的。要能看到效果,可使用grread函数。
(defun C:xh(/ LayIn p1 p2 p3 p4 bx bxh l txth)
(setq txth 5);文字高度
(setq l (* txth 1.4));下划线长度
(setq LayIn (getvar 'clayer))
(if (= (tblsearch "LAYER" "2细实线") nil);确定是否建立"2细实线"图层
(command "-LAYER" "M" "2细实线" "c" "3" "" "lw" "0.18" "" "")
)
(if (= (tblsearch "LAYER" "6标注") nil);确定是否建立"6标注"图层
(command "-LAYER" "M" "6标注" "c" "6" "" "lw" "0.18" "" "")
)
(setq bxh (getint "\n请输入起始序号 :"));序号数
(while (setq p1 (getpoint "\n请选择起点 :"));在零件上选一点
(setq bx (itoa bxh))
(if (setq p2 (getpoint "\n请选择第二点,直接回车表示无第二点 :")) (progn
(setq p3 (polar p2 0 l));文字下划线锚点
(setq p4 (polar p2 1.3 1.5))
(command "layer" "s" "2细实线" "" "qleader" p1 p2 p3 "" " " "")
) (progn ;如果在零件中标注
(setq p3 (polar p1 0 l));文字下划线锚点
(setq p4 (polar p1 1.3 1.5))
(command "layer" "s" "2细实线" "" "line" p1 p3 "")
))
(command "layer" "set" "6标注" "" "text" p4 txth 0 bx)
(setq bxh (1+ bxh))
)
(setvar "clayer" LayIn)
(princ)
)
本帖最后由 wuxuloveguo 于 2010-12-25 11:12 编辑
支持一下!
grread函数的论坛有人写过,可以自己搜索一下!
鋼構CAD 工具箱內有此功能
页:
[1]