[求助]请教一下,如何编定义标注样式的LSP?
烦劳各位高手,帮我编个能在开启CAD文件时自动建立几个标注样式,我不知用那个命令才行.多谢! 有这么难吗?也没人回个话. <p>打开别人的图形文件后,在需要的时候,能自动加载自己常用的图层\标注样式\文字样式就好了</p><p>至于新建图形,直接在模板里设置即可</p> <p>这个比较简单,要建立哪几个标注样式?标注样式是什么样的?</p> <p>请问,若想建立的标注样式箭头形式不是默认的,想改成例如倾斜(OBLIQUE)</p><p>这部分程序如何写?</p> <p>;;建立标注式</p><p>(defun dimblk1(/ p1 p2 mp p3 p4 ent1 ent2 ifdimblk )<br/> (setq p1 (list 0 0)<br/> p2 (polar p1 (* 0.25 pi) 2)<br/> mp (list (* 0.5 (car p2)) (* 0.5 (cadr p2)))<br/> p3(list (- (car mp) 1.5) (cadr mp))<br/> p4(list (+ (car mp) 1.5) (cadr mp))<br/> )<br/> (command "line" p3 p4 "")<br/> (setq ent1 (entlast))<br/> (command "pline" p1 "w" 0.5 0.5 p2 "")<br/> (setq ent2 (entlast))<br/> (setq ifdimblk (tblsearch "block" "DIM1"))<br/> (if ifdimblk (command "block" "DIM1" "y" mp ent1 ent2 "")<br/> (command "block" "DIM1" mp ent1 ent2 "")<br/> )<br/> (princ)<br/>)</p><p><br/>(defun dimblk2(/ p1 p2 p3 arrowblock flag)<br/> (setq p1 (list 0 0)<br/> p2 (list -2.5 0.43)<br/> p3 (list -2.5 -0.43)<br/> )<br/> (command "solid" p1 p2 p3 p1"")<br/> (setq arrowblock (entlast))<br/> (setq flag (tblsearch "block" "dim2"))<br/> (if (null flag)<br/> (command "block" "dim2" p1 arrowblock "")<br/> (progn (command "block" "dim2" "n") (entdel arrowblock))<br/> )<br/>)</p><p></p><p>(defun dimset(/ ifdimt )<br/> (dimblk1)<br/> (dimblk2)<br/>;;; (if (null (tblsearch "style" "DIMT"))(command "style" "DIMT" "txt.shx" 0 0.70 "" "" "" "" ))<br/> (command "style" "DIMT" "txt.shx" 0 0.70 "" "" "" "" )<br/> (setq ifdimt (tblsearch "style" "DIMT"))<br/> (if (not ifdimt) (progn (princ "\n 没有相应的字体")(exit)))<br/> (setq version (atof (substr (getvar "acadver") 1 2)))<br/> (setvar "dimexe" 1.25)<br/> (setvar "dimcen" 2.5)<br/> (setvar "dimgap" 0.625)<br/> (setvar "dimsah" 1)<br/> (setvar "dimblk1" "DIM1")<br/> (setvar "dimblk2" "DIM1")<br/> (setvar "dimasz" 1)<br/> (setvar "dimtxt" 3)<br/> (setvar "dimtxsty" "DIMT")<br/> (if (>= version 15)(setvar "dimldrblk" "DIM2"))<br/> (if (>= version 16)(setvar "dimdsep" "."))<br/> (setvar "dimclre" 0)<br/> (setvar "dimclrd" 0)<br/> (setvar "dimclrt" 0)<br/> (setvar "dimexo" 2.5)<br/> (if (>= version 15)(setvar "dimtmove" 2))<br/>)</p><p>(defun c:bz()<br/> (ini)<br/> (dimset)<br/> (setvar "dimscale" scal)<br/> (if (= scal 1) (setvar "dimlfac" 10)(setvar "dimlfac" 0.1))<br/> (if (not (tblsearch "dimstyle" "SCAL10"))<br/> (command "dimstyle" "s" "SCAL10")<br/> (command "dimstyle" "s" "SCAL10" "y")<br/> )<br/> (if (= scal 1) (setvar "dimlfac" 20)(setvar "dimlfac" 0.2))<br/> (if (not (tblsearch "dimstyle" "SCAL20"))<br/> (command "dimstyle" "s" "SCAL20")<br/> (command "dimstyle" "s" "SCAL20" "y")<br/> )<br/> (if (= scal 1) (setvar "dimlfac" 30)(setvar "dimlfac" 0.3))<br/> (if (not (tblsearch "dimstyle" "SCAL30"))<br/> (command "dimstyle" "s" "SCAL30")<br/> (command "dimstyle" "s" "SCAL30" "y")<br/> )<br/> (if (= scal 1) (setvar "dimlfac" 50)(setvar "dimlfac" 0.5))<br/> (if (not (tblsearch "dimstyle" "SCAL50"))<br/> (command "dimstyle" "s" "SCAL50")<br/> (command "dimstyle" "s" "SCAL50" "y")<br/> )<br/> (if (= scal 1) (setvar "dimlfac" 100)(setvar "dimlfac" 1.0))<br/> (if (not (tblsearch "dimstyle" "SCAL100"))<br/> (command "dimstyle" "s" "SCAL100")<br/> (command "dimstyle" "s" "SCAL100" "y")<br/> )<br/> (princ "\n已经建立了20 30 50 100 比例的标注样式")<br/> (reset)<br/> (princ)<br/>)</p><p></p><p></p><p>我以前写过一个,你自己看看吧,</p> <p>如有中文注明就好啦</p> <p>个人感觉,这种功能用lisp不好实现。因要使标注样式美观,线性,坐标,角度,R角等设置都不尽相同。即使用lisp能设置,lisp也很长。栽入内存,影响绘图速度。 </p><p> 我个人做法是,找一个文件,设成样板。用AutoCAD设计中心功能,将标注样式载入,再将新样式设成当前标注样式。一般用设计中心不是很多,以后打开设计中心,就是上一次载入状态,再直接选中拖入,很方便。</p> 不能用?????????????
页:
[1]
2