明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4387|回复: 7

在LSP中怎么删除或覆盖已经建立的标注样式??

[复制链接]
发表于 2004-12-7 17:28:00 | 显示全部楼层 |阅读模式
我想用LISP建立新的标注样式, (defun c:test()
(setq sf (getreal "输入全局比例因子gsf:"))
(setvar "dimscale" (* 1 gsf)) (command "-dimstyle" "s" "gdimstd")
(prin1)
) 第一次运行TEST通过,建立了新的标注样式。但是第二次运行重新输入比例因子后,提示 “该名称已经使用,是否重新定义?<n> 我想覆盖原来的哪个标注样式gdimstd怎么覆盖? 或者我想先搜索样式,然后删除已存在的同名样式。但是有不知道什么命令能删除已存在的标注样式。“-DIMSTYLE”里面没有。 (setq dimsn (tblsearch "dimstyle" "gdimstd"))
(if (/= nil dimsn) ;接下来想删除gdimstd怎么删除? 请大家帮忙
发表于 2004-12-7 18:00:00 | 显示全部楼层
同样期待答案。
 楼主| 发表于 2004-12-7 18:02:00 | 显示全部楼层
是CAD的命令?先谢过啦!那删除呢?有方法么?
发表于 2004-12-7 18:30:00 | 显示全部楼层
(vla-delete (vla-item (vla-get-dimstyles (vla-get-activedocument
(vlax-get-acad-object))) "gdimstd")) 如果当前标注样式是gdimstd,就无法删除

点评

xgr
好方法  发表于 2012-4-8 15:20
 楼主| 发表于 2004-12-7 20:18:00 | 显示全部楼层
本帖最后由 作者 于 2004-12-7 21:02:15 编辑

还是VLISP功能强大啊!但是:



飞哥,调试通过了。但是。 vla-item 是VLISP的什么函数啊,我查了VLISP的函数词典但是没找到这个。谢谢:)
发表于 2004-12-8 08:29:00 | 显示全部楼层
这是ActiveX的方法,你查vla-后面的部分或者vla-get-(或val-put-)后面的部分,至于用法,可以先参考帮助文件中的ActiveX部分
发表于 2005-7-20 17:51:00 | 显示全部楼层
meflying发表于2004-12-8 8:29:00这是ActiveX的方法,你查vla-后面的部分或者vla-get-(或val-put-)后面的部分,至于用法,可以先参考帮助文件中的ActiveX部分

能详细一点吗? 讲得我有点乱!
发表于 2006-12-29 14:25:00 | 显示全部楼层
本帖最后由 作者 于 2006-12-29 14:29:36 编辑

这个是我的新建标注样式的程序,看是否对你有帮助


________________________________________________2.10 自动建立标注样式

(defun c:nd (/ sct sca dsname SCALL SCTEXT)
  (princ "\n命令解释为D)imstyle  (M)aker")
  (setvar "cmdecho" 0)
  (princ "\n形成的标注样式名为:SMDIMA-B:")
  (setq scall (getint "\n请输入比例值A:"))
  (setq sctext (getint "\n请输入比例值B:"))
  (if (and sctext scall)
    (progn
      (setq sca    (rtos scall)
     sct    (rtos sctext)
     dsname (strcat "SMDIM" sca "-" sct)
      )
     
      (if (and (tblsearch "STYLE" "SM")
        (not (tblsearch "DIMSTYLE" dsname))
   )
 (progn
   (princ (strcat "\n新添加的标注样式名称将被命名为: " dsname))
   (entmake (list
       '(0 . "DIMSTYLE")
       '(100 . "AcDbSymbolTableRecord")
       '(100 . "AcDbDimStyleTableRecord")
       (cons 2 dsname)
       '(70 . 0)
       '(3 . "")
       '(4 . "")
       '(5 . "")
       '(6 . "")
       '(7 . "")
       (cons 40 (distof (rtos scall)))
       '(41 . 2.5)
       '(42 . 0.625)
       '(43 . 3.75)
       '(44 . 1.25)
       '(45 . 0.0)
       '(46 . 0.0)
       '(47 . 0.0)
       '(48 . 0.0)
       '(140 . 3.0)
       '(141 . 2.5)
       '(142 . 0.0)
       '(143 . 0.0393701)
       (cons 144 (distof (rtos sctext)))
       '(145 . 0.0)
       '(146 . 1.0)
       '(147 . 0.625)
       '(71 . 0)
       '(72 . 0)
       '(73 . 0)
       '(74 . 1)
       '(75 . 0)
       '(76 . 0)
       '(77 . 1)
       '(78 . 8)
       '(170 . 0)
       '(171 . 3)
       '(172 . 1)
       '(173 . 0)
       '(174 . 0)
       '(175 . 0)
       '(176 . 3)
       '(177 . 3)
       '(178 . 3)
       '(270 . 2)
       '(271 . 0)
       '(272 . 0)
       '(273 . 2)
       '(274 . 3)
       (cons 340 (tblobjname "style" "SM"))
       '(275 . 0)
       '(280 . 0)
       '(281 . 0)
       '(282 . 0)
       '(283 . 0)
       '(284 . 8)
       '(285 . 0)
       '(286 . 0)
       '(287 . 3)
       '(288 . 0)
     )
   )
   (command "-DIMSTYLE" "r" dsname)
   (setvar "DIMFIT" 1)
   (setvar "DIMUPT" 1)
   (setvar "DIMtad" 2)
   (command "-dimstyle" "save" (strcat dsname "$3"))
   (command "-dimstyle" "save" (strcat dsname "$4"))
   (setvar "DIMtad" 2)
   (setvar "DIMtih" 1)
   (setvar "DIMtoh" 1)
   (setvar "DIMfit" 1)
   (setvar "DIMUPT" 1)
   (command "-dimstyle" "save" (strcat dsname "$2"))
 )
 (princ "\n该样式可能已经曾在,或本图不曾在SM字体!")
      )
    )
  )
  (princ)
)

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-11-23 11:32 , Processed in 0.224192 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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