在AUTOCAD中如何用lisp语言新建一个标注样式

标注样式管理器中显示的结构如下:
bz <=====首先新建一个名为bz的样式
|
|--线性 <=====再新建一个名为bz下的线性样式
|--角度 <=====再新建一个名为bz下的角度样式
standard

    标注样式要先建立字体样式。

    如果箭头没有块的话,要建立块。

    ;;;主程序标注样式
    (defun TextDim ()
     (tssd2)
     (if (null (tblsearch "DIMSTYLE" "TSSD_50_50-250"));1
      (progn
       (if (null (tblobjname "BLOCK" "_ARCHTICK"))
        (progn
         (entmake (list '(0 . "BLOCK") '(100 . "AcDbEntity") '(67 . 0) '(8 . "0") '(100 . "AcDbBlockBegin") '(70 . 0) '(10 0.0 0.0 0.0) '(2 . "_ARCHTICK") '(1 . "")))
         (entmake (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(67 . 0) '(8 . "0") '(62 . 0) '(6 . "ByBlock") '(100 . "AcDbPolyline") '(90 . 2) '(43 . 0.15) '(10 -0.5 -0.5 0.0) '(10 0.5 0.5 0.0) '(210 0.0 0.0 1.0)))
         (entmake (list '(0 . "ENDBLK")))
         (entupd (tblobjname "Block" "_ARCHTICK"))
        )
       )
       (entmake (list '(0 . "DIMSTYLE") 
                      '(100 . "AcDbSymbolTableRecord") 
                      '(100 . "AcDbDimStyleTableRecord") 
                      '(70 . 0)
                      '(2 . "TSSD_50_50-250")   ; æ ‡æ³¨æ ·å¼å
                      '(3 . "")        ; æ ‡æ³¨å‰ç¼€
                      '(4 . "")
                      '(40 . 0.0)       ; æ ‡æ³¨ç‰¹å¾æ¯”例,缩放到布局
                      '(41 . 60)        ; ç®­å¤´å°ºå¯¸
                      '(42 . 50)        ; èµ·ç‚¹åç§»é‡
                      '(43 . 0)         ; åŸºçº¿é—´è·
                      '(44 . 0)         ; è¶…出尺寸线
                      '(47 . 0.000)     ; ä¸Šåå·®
                      '(48 . 0.000)     ; ä¸‹åå·®
                      '(71 . 0)         ; å…¬å·®æ— 
                      '(73 . 0)         ;设置对齐或水平的内部文字
                      '(74 . 0)         ;设置外部文字对齐或水平
                      '(77 . 2)         ; æ–‡å­—在尺寸线外部
                      '(140 . 230)      ; æ–‡å­—高度
                      '(141 . 0)        ; åœ†å¿ƒæ ‡è®°
                      '(142 . 0)        ;箭头斜线的大小
                      '(144 . 1.0)      ; æµ‹é‡æ¯”例单位
                      '(146 . 0.5)      ; å…¬å·®é«˜åº¦æ¯”例
                      '(147 . 60)       ; æ–‡å­—从尺寸线偏移
                      '(172 . 2)        ; å°ºå¯¸ç•Œçº¿é—´è¿žçº¿
                      '(173 . 0)        ; ç»˜åˆ¶ç®­å¤´çš„用户定义块 
                      '(174 . 4)        ; é™åˆ¶æ–‡å­—在延伸线间
                      '(176 . 256)      ; éšå±‚
                      '(177 . 256)      ; éšå±‚
                      '(178 . 256)      ; éšå±‚
                      '(271 . 0)        ; å°ºå¯¸æ ‡æ³¨ç²¾åº¦
                      '(272 . 3)        ; å…¬å·®æ ‡æ³¨ç²¾åº¦
                      '(275 . 0)        ; è§’度标注制式,十进制。
                      '(280 . 0)        ;确定文字的水平位置
                      '(283 . 1)        ;DIMTOLJ é€šç”¨ è®¾ç½®å…¬å·®æ–‡å­—的竖向位置
                      '(288 . 0)        ;手动放置尺寸
                      '(279 . 2)        ;文字移动;
                      (cons 340 (tblobjname "style" "TSSD_Dimension")) ; æ–‡å­—样式名
                      (cons 342 (cdr (assoc 330 (entget (tblobjname "BLOCK" "_ARCHTICK")))));;;DIMBLK:
                  )
       )
      )
     )
    )

    ;建立TSSD_Dimension字体
    (defun TSSD2 ( / newt)
     (if (null (tblsearch "style" "TSSD_Dimension"))
      (progn
       (if (null vlax-dump-object) (vl-load-com) )
       (setq newT (vla-add (vla-get-TextStyles (vla-get-activedocument (vlax-get-acad-object))) "TSSD_Dimension"))
       (vla-put-fontfile newT "tssdeng.shx")
       (vla-put-bigfontfile newT "hztxt.shx");大字体为hztxt
       (vla-put-height newT 0);高度0
       (vla-put-width newT 0.5);宽度因子0.6
       (vla-put-obliqueAngle newT (/ (* pi 3) 180));倾斜角度3
      )
     )
    );【注意:字体库里面必需有"tssdeng.shx""hztxt.shx"两个字体】
温馨提示:内容为网友见解,仅供参考
第1个回答  2007-03-30
(setq
etmkrtn (entmake (list
(cons 0 "DIMSTYLE")
(cons 100 "AcDbSymbolTableRecord")
(cons 100 "AcDbDimStyleTableRecord")
(cons 2 "Sdimstyle_by_chen")
(CONS 5 "_ARCHTICK")
(CONS 6 "_ARCHTICK")
(CONS 7 "_ARCHTICK")
(cons 40 0.01)
(cons 41 120.0)
(cons 42 200.0)
(cons 43 200.0)
(cons 44 200.0)
(cons 45 10.0)
(cons 70 0)
(cons 73 0)
(cons 74 0)
(cons 77 1)
(cons 78 12)
(cons 140 280.0)
(cons 141 1.0)
(cons 143 1.0)
(cons 144 100.0)
(cons 145 1.6667)
(cons 146 0.1667)
(cons 147 100.0)
(cons 171 0)
(cons 172 1)
(cons 173 1)
(cons 174 1)
(cons 176 256)
(cons 177 256)
(cons 178 3)
(cons 274 0)
(cons 284 12)
(cons 285 12)
(cons 286 12)
(cons 340 dltxt)
)
)
)
)本回答被网友采纳
第2个回答  2007-03-25
直接使用ddim命令不是很方便吗?

AutoCAD二次开发,如何使用LISP建立一个标注样式?
(setvar "dimlfac" 1);测量比例因子 (command "-dimstyle" "S" "TSSD_100_100" "" "");建立标注样式 )

在autocad里面,我编写了很多lisp命令,我想新增一个菜单工具栏(如:文 ...
ID_WeiLarge [大尺寸(&L)]^C^C^Cdim dimasz (* 3.0 (getvar "USERI1")) dimexe (* 3 (getvar "USERI1")) dimtxt (* 4.2 (getvar "USERI1"))ID_WeiMedium [中尺寸(&M)]^C^C^Cdim dimasz (* 2.5 (getvar "USERI1")) dimexe (* 2 (getvar "USERI1")) d...

如何在AutoCAD Visual Lisp编辑器中创建与编译lisp程序
1.AutoCAD2008及之前的版本,在菜单栏“工具(Tools)"下面,选择”AutoLisp"--->"Visual Lisp编辑器"。(”AutoLisp"--->"导入应用"这个命令是用来加载AutoLisp脚本的)2.AutoCAD2009及之后的版本,在功能区的”管理“选项卡里可以直接打开Visual Lisp编辑器。如何在AutoCAD Visual Lisp编辑器中创建与编译...

auto lisp怎么标注尺寸
(setq pt (list 0 0));起点(setq pt2 (list 0 100));终点(setq pt3 (list 10 50));文字位置(command "dimlinear" pt pt2 pt3 "")

cad如何自己编写插件
首先,你需要具备一定的AutoLISP编程基础和CAD的相关知识。AutoLISP是AutoCAD内置的编程语言,它允许用户自定义函数和命令,从而扩展CAD的功能。其次,打开AutoCAD软件并进入命令行。输入“vlisp”并按下回车键,进入Visual LISP IDE。在这个环境中,你可以创建新的LISP文件,并在其中编写LISP代码来...

AutoCAD中,用lisp语言如何建立一个新的窗口。
你的意思是用LISP建立一个新的CAD文档么?如果是的话,可以这样:(vl-load-com)(vla-add (vla-get-documents (vlax-get-acad-object)) "")但当前的图档还是之前的当前图档,不知道是不是我CAD有问题,强行设置新建的图档为当前图档时,会提示错误,设置新建图档为当前图档如下:(vl-load-com...

用lisp语句如何修改天正的文字和颜色问题?
Lisp语言可以通过调用AutoCAD的API函数来修改天正软件中的文字样式和颜色。下面是一个示例Lisp语句,用于修改当前选择的文字对象的样式和颜色:lispCopy code(defun modify-text-style-and-color ()(setq ss (ssget "_:L" '((0 . "TEXT")))(if ss (progn (setq text-style "新的文字样式") ;...

求大神给写一个lisp程序,加载以后,双击标注就能进行编辑
运行autolisp,需要输入命令,在运行autolisp的时候,别的命令不能输入,你要双击就能够编辑标注的话,好像不行的。在autocad里面,直接输入命令:ED;就可以编辑任何文字,当然也包括了标注。在高版本的autocad里面(如2010版本),有个(快捷面板),选择标注后,可以直接在里面修改。就在文字替代这一行。

如何使用visual lisp编辑器 编辑出查询多段线所有拐点座标的程式_百 ...
1 首先开启AutoCAD 2 在选单栏点选工具。3 选择AutoLISP--->Visual LISP编辑器 4 LISP的操作介面就出现了,点选新建。5 输入的介面已经出现,现在可在编辑器内输入你的程式。END 方法\/步骤2 1 也可以用命令启用编辑器,在命令栏输入vlide。2 可得到相同效果。如何使用Visual Basic编辑器 更确切地...

cad中添加LSP软件,如何使用
具体以下。acad.lsp是AutoCAD软件的Lisp脚本文件,当打开AutoCAD图形dwg文件时会自动运行相同文件夹中的名为acad.lsp的脚本文件。不过现在一般是CAD病毒文件。只要将这文件放到CAD安装文件夹,或放在一个".DWG"文件的目录,打开这个目录的CAD文件,acad.lsp就能自动运行了(典型的病毒特征)。打开一份图纸,...

相似回答