明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6331|回复: 10

[求助]请教一下,如何编定义标注样式的LSP?

[复制链接]
发表于 2007-12-21 21:17:00 | 显示全部楼层 |阅读模式
  烦劳各位高手,帮我编个能在开启CAD文件时自动建立几个标注样式,我不知用那个命令才行.多谢!
 楼主| 发表于 2007-12-23 18:48:00 | 显示全部楼层
有这么难吗?也没人回个话.
发表于 2008-5-15 09:54:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2008-6-3 15:46:00 | 显示全部楼层

打开别人的图形文件后,在需要的时候,能自动加载自己常用的图层\标注样式\文字样式就好了

至于新建图形,直接在模板里设置即可

发表于 2008-6-18 13:25:00 | 显示全部楼层

这个比较简单,要建立哪几个标注样式?标注样式是什么样的?

发表于 2008-6-19 12:17:00 | 显示全部楼层

请问,若想建立的标注样式箭头形式不是默认的,想改成例如倾斜(OBLIQUE)

这部分程序如何写?

发表于 2008-7-24 21:52:00 | 显示全部楼层

;;建立标注式

(defun dimblk1(/ p1 p2 mp p3 p4 ent1 ent2 ifdimblk )
  (setq p1 (list 0 0)
 p2 (polar p1 (* 0.25 pi) 2)
 mp (list (* 0.5 (car p2)) (* 0.5 (cadr p2)))
 p3(list (- (car mp) 1.5) (cadr mp))
 p4(list (+ (car mp) 1.5) (cadr mp))
   )
  (command "line" p3 p4 "")
  (setq ent1 (entlast))
  (command "pline" p1 "w" 0.5 0.5 p2 "")
  (setq ent2 (entlast))
  (setq ifdimblk (tblsearch "block" "DIM1"))
  (if ifdimblk (command "block" "DIM1" "y" mp ent1 ent2 "")
               (command "block" "DIM1" mp ent1 ent2 "")
  )
  (princ)
)


(defun dimblk2(/ p1 p2 p3 arrowblock flag)
  (setq p1 (list 0 0)
 p2 (list -2.5 0.43)
 p3 (list -2.5 -0.43)
  )
  (command "solid" p1 p2 p3 p1"")
  (setq arrowblock (entlast))
  (setq flag (tblsearch "block" "dim2"))
  (if (null flag)
    (command "block" "dim2" p1 arrowblock "")
    (progn (command "block" "dim2" "n") (entdel arrowblock))
  )
)

(defun dimset(/ ifdimt )
  (dimblk1)
  (dimblk2)
;;;  (if (null (tblsearch "style" "DIMT"))(command "style" "DIMT" "txt.shx" 0 0.70 "" "" "" "" ))
  (command "style" "DIMT" "txt.shx" 0 0.70 "" "" "" "" )
  (setq ifdimt (tblsearch "style" "DIMT"))
  (if (not ifdimt) (progn (princ "\n 没有相应的字体")(exit)))
  (setq version (atof (substr (getvar "acadver") 1 2)))
  (setvar "dimexe" 1.25)
  (setvar "dimcen" 2.5)
  (setvar "dimgap" 0.625)
  (setvar "dimsah" 1)
  (setvar "dimblk1" "DIM1")
  (setvar "dimblk2" "DIM1")
  (setvar "dimasz" 1)
  (setvar "dimtxt" 3)
  (setvar "dimtxsty" "DIMT")
  (if (>= version 15)(setvar "dimldrblk" "DIM2"))
  (if (>= version 16)(setvar "dimdsep" "."))
  (setvar "dimclre" 0)
  (setvar "dimclrd" 0)
  (setvar "dimclrt" 0)
  (setvar "dimexo" 2.5)
  (if (>= version 15)(setvar "dimtmove" 2))
)

(defun c:bz()
  (ini)
  (dimset)
  (setvar "dimscale" scal)
  (if (= scal 1) (setvar "dimlfac" 10)(setvar "dimlfac" 0.1))
  (if (not (tblsearch "dimstyle" "SCAL10"))
      (command "dimstyle" "s" "SCAL10")
      (command "dimstyle" "s" "SCAL10" "y")
  )
  (if (= scal 1) (setvar "dimlfac" 20)(setvar "dimlfac" 0.2))
  (if (not (tblsearch "dimstyle" "SCAL20"))
      (command "dimstyle" "s" "SCAL20")
      (command "dimstyle" "s" "SCAL20" "y")
  )
  (if (= scal 1) (setvar "dimlfac" 30)(setvar "dimlfac" 0.3))
  (if (not (tblsearch "dimstyle" "SCAL30"))
      (command "dimstyle" "s" "SCAL30")
      (command "dimstyle" "s" "SCAL30" "y")
  )
  (if (= scal 1) (setvar "dimlfac" 50)(setvar "dimlfac" 0.5))
  (if (not (tblsearch "dimstyle" "SCAL50"))
      (command "dimstyle" "s" "SCAL50")
      (command "dimstyle" "s" "SCAL50" "y")
  )
  (if (= scal 1) (setvar "dimlfac" 100)(setvar "dimlfac" 1.0))
  (if (not (tblsearch "dimstyle" "SCAL100"))
      (command "dimstyle" "s" "SCAL100")
      (command "dimstyle" "s" "SCAL100" "y")
  )
  (princ "\n已经建立了20 30 50 100 比例的标注样式")
  (reset)
  (princ)
)

我以前写过一个,你自己看看吧,

发表于 2008-12-31 18:34:00 | 显示全部楼层

如有中文注明就好啦

发表于 2009-2-5 12:33:00 | 显示全部楼层

个人感觉,这种功能用lisp不好实现。因要使标注样式美观,线性,坐标,角度,R角等设置都不尽相同。即使用lisp能设置,lisp也很长。栽入内存,影响绘图速度。 

    我个人做法是,找一个文件,设成样板。用AutoCAD设计中心功能,将标注样式载入,再将新样式设成当前标注样式。一般用设计中心不是很多,以后打开设计中心,就是上一次载入状态,再直接选中拖入,很方便。

发表于 2009-3-6 11:10:00 | 显示全部楼层
不能用?????????????
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-2-27 20:52 , Processed in 0.203805 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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