找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 11514|回复: 21

[已解决] 用LISP 建立一个文字样式同标注样式

[复制链接]

已领礼包: 3199个

财富等级: 富可敌国

发表于 2014-1-16 19:40:07 | 显示全部楼层 |阅读模式
悬赏20D豆已解决
本帖最后由 lucas3 于 2014-1-16 19:47 编辑

解决问题后 这里的 80豆一并送出 http://bbs.xdcad.net/thread-672387-1-1.html

想用lisp新建一个文字样式同标注样式,详情如下:
1.建立一个名为“GB孔”的文字样式,如果下图所示,SHX字体一定要为gdt.shx
forum.php?mod=attachment&aid=NzU3OHwzYWE3YzkyZnwxMzg5ODcyNTI0fDcyNTQwNnw2NzIzODc%3D.gif

2.建立一个名为“GB孔”的标注样式,如下图


forum.php?mod=attachment&aid=NzU3OXw0ZTg1MzFiOHwxMzg5ODcyNTI0fDcyNTQwNnw2NzIzODc%3D.gif

基线间距高为7,超出尺寸线设为2.25 ,起点偏移量设为2

forum.php?mod=attachment&aid=NzU4MHwxY2NmODRjN3wxMzg5ODcyNTI0fDcyNTQwNnw2NzIzODc%3D.gif
标注文字样试设为先建立的“GB孔”文字高度为2.5

forum.php?mod=attachment&aid=NzU4MXw1NDMyMThkY3wxMzg5ODcyNTI0fDcyNTQwNnw2NzIzODc%3D.gif

接着建立一个直径标注的子样式,如下

forum.php?mod=attachment&aid=NzU4Mnw2YjA3YjEwMnwxMzg5ODcyNTI0fDcyNTQwNnw2NzIzODc%3D.gif

文字对齐设为ISO标准

forum.php?mod=attachment&aid=NzU4M3xkNmViZGU5MnwxMzg5ODcyNTI0fDcyNTQwNnw2NzIzODc%3D.gif

好了,标注样式设置完了

forum.php?mod=attachment&aid=NzU4NHw0YTYwODg0OHwxMzg5ODcyNTI0fDcyNTQwNnw2NzIzODc%3D.gif










最佳答案

查看完整内容

标注变量没有修改
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-1-16 19:40:08 | 显示全部楼层
标注变量没有修改
  1. (command ".-style" "Gdt" "gdt.shx,gbcbig.shx" 0 1.0 0 "n" "n" "n")
  2. (defun MkDimStyleFrom (OldName NewName / dims ndim)
  3.   (setq dims (vla-get-dimstyles
  4.         (vla-get-activedocument (vlax-get-acad-object))
  5.       )
  6.   )
  7.   (if (tblsearch "dimstyle" oldname)
  8.     (progn
  9.       (if (not (tblsearch "DimStyle" newName))
  10. (setq ndim (vla-add dims newName))
  11.       )
  12.       (vla-copyfrom (vla-item dims oldname) ndim)
  13.       (vla-put-activedimstyle dims ndim)
  14.     )
  15.   )
  16. )
  17. ;;$2 角度标注,$3直径标注,$4 半径标注,$6 坐标标注
  18. (defun mksubdimsty (name mod / dims)
  19.   (setq dims (vla-get-dimstyles
  20.         (vla-get-activedocument (vlax-get-acad-object))
  21.       )
  22.   )
  23.   (if (not (tblsearch "dimstyle" name))
  24.     (progn
  25.       (vla-put-activedocument dims (vla-item dims name))
  26.       (vl-cmdf ".dimstyle" "s" (strcat (getvar "dimstyle") mod))
  27.     )
  28.   )
  29.   (princ)
  30. )

点评

大师谢谢你,我不知道怎么调用你自定义的这些函数  详情 回复 发表于 2014-1-17 15:21
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-1-17 01:25:22 来自手机 | 显示全部楼层
本帖最后由 st788796 于 2014-1-17 08:20 编辑

command有什么问题?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 3199个

财富等级: 富可敌国

 楼主| 发表于 2014-1-17 15:21:13 | 显示全部楼层
st788796 发表于 2014-1-17 12:00
标注变量没有修改

大师谢谢你,我不知道怎么调用你自定义的这些函数
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 3199个

财富等级: 富可敌国

 楼主| 发表于 2014-1-17 20:06:09 | 显示全部楼层
有谁会吗?帮帮我好么?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-1-17 20:21:47 来自手机 | 显示全部楼层
本帖最后由 st788796 于 2014-1-17 20:23 编辑
lucas3 发表于 2014-1-17 20:06
有谁会吗?帮帮我好么?


问了半天你不懂啊?!
不会用就用命令建好直接用

点评

大师,你就帮人帮到底,万分感谢  详情 回复 发表于 2014-1-17 21:25
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 3199个

财富等级: 富可敌国

 楼主| 发表于 2014-1-17 21:25:09 | 显示全部楼层
st788796 发表于 2014-1-17 20:21
问了半天你不懂啊?!
不会用就用命令建好直接用

大师,你就帮人帮到底,万分感谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2014-1-18 00:16:28 | 显示全部楼层
直接开一个空dwg,自己用cad命令全部建好,存。
需要的时候直接插入那dwg就可以了.
(command "insert" "dwgname")(command)
对不懂lisp的人最方便的方法。而且win7有的ttc文字只能用cad命令。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 3199个

财富等级: 富可敌国

 楼主| 发表于 2014-1-18 14:54:08 | 显示全部楼层
谢谢在这里回复的每一位朋友,谢谢你们的热心帮助,已有朋友帮我解决了此问题,用的是entmakex
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-1-18 17:44:27 | 显示全部楼层
本帖最后由 st788796 于 2014-1-18 17:47 编辑
lucas3 发表于 2014-1-18 14:54
谢谢在这里回复的每一位朋友,谢谢你们的热心帮助,已有朋友帮我解决了此问题,用的是entmakex

  1. (command ".-style"    "GB孔"           "gdt.shx,gbcbig.shx"
  2.          0              1.0           0                "n"
  3.          "n"              "n"
  4.         )

  5. (defun MkDimStyleFrom (OldName NewName lst / dims ndim)
  6.   (setq        dims (vla-get-dimstyles
  7.                (vla-get-activedocument (vlax-get-acad-object))
  8.              )
  9.   )
  10.   (if (tblsearch "dimstyle" oldname)
  11.     (progn
  12.       (if (not (tblsearch "DimStyle" newName))
  13.         (setq ndim (vla-add dims newName))
  14.       )
  15.       (vla-copyfrom (vla-item dims oldname) ndim)
  16.       (vla-put-activedimstyle
  17.         (vla-get-activedocument (vlax-get-acad-object))
  18.         ndim
  19.       )
  20.       (if lst
  21.         (progn
  22.           (mapcar '(lambda (x) (apply 'setvar x)) lst)
  23.           (vl-cmdf ".dimstyle" "s" NewName "Y")
  24.         )
  25.       )
  26.     )
  27.   )
  28. )
  29. ;;$2 角度标注,$3直径标注,$4 半径标注,$6 坐标标注
  30. (defun mksubdimsty (name mod lst / dims)
  31.   (setq        dims (vla-get-dimstyles
  32.                (vla-get-activedocument (vlax-get-acad-object))
  33.              )
  34.   )
  35.   (if (tblsearch "dimstyle" name)
  36.     (progn
  37.       (vla-put-activedimstyle
  38.         (vla-get-activedocument (vlax-get-acad-object))
  39.         (vla-item dims name)
  40.       )
  41.       (vl-cmdf ".dimstyle" "s" (strcat (getvar "dimstyle") mod))
  42.       (if lst
  43.         (progn
  44.           (mapcar '(lambda (x) (apply 'setvar x)) lst)
  45.           (vl-cmdf ".dimstyle"
  46.                    "s"
  47.                    (strcat (getvar "dimstyle") mod)
  48.                    "y"
  49.           )
  50.         )
  51.       )
  52.     )
  53.   )
  54.   (princ)
  55. )


  56. (MkDimStyleFrom
  57.   "ISO-25"
  58.   "GB孔"
  59.   '(("DIMDLI" 7.) ("DIMEXE" 2.25) ("DIMEXO" 2.) ("DIMTXT" 2.5))
  60. )
  61. (mksubdimsty
  62.   "GB孔"
  63.   "$4"
  64.   '(("dimtoh" "on") ("dimtih" "off"))
  65. )

点评

st788796 您好,再次感谢你,虽然他人帮忙解决了,还是拿你写的这个代码测试了一下,显示 ,我加载 了晓东的LISP函数库同API后,再次测试,显示 输入DDIM查看标注样式 [attachimg]7695[/attachimg][attachimg]  详情 回复 发表于 2014-1-18 22:04
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 3199个

财富等级: 富可敌国

 楼主| 发表于 2014-1-18 22:04:42 | 显示全部楼层

st788796 您好,再次感谢你,虽然他人帮忙解决了,还是拿你写的这个代码测试了一下,显示  <错误: AutoCAD 变量设置被拒绝: "dimtoh" "on">,我加载 了晓东的LISP函数库同API后,再次测试,显示 <错误: ActiveX 服务器返回错误: 非选择性的参数。>

输入DDIM查看标注样式
sshot-16.png sshot-17.png

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-1-19 08:34:22 | 显示全部楼层
本帖最后由 st788796 于 2014-1-19 08:43 编辑
lucas3 发表于 2014-1-18 22:04
st788796 您好,再次感谢你,虽然他人帮忙解决了,还是拿你写的这个代码测试了一下,显示  ,我加载 了晓 ...

给大家提供一种思路和通用方法
  1. ;;功能: 由已有标注样式建立新标注样式
  2. ;;参数: OldName --- 源标注样式名
  3. ;;      NewName --- 新标注样式名
  4. ;;      lst     --- 新标注样式中需要修改的变量表
  5. (defun MkDimStyleFrom (OldName NewName lst / dims ndim)
  6.   (setq        dims (vla-get-dimstyles
  7.                (vla-get-activedocument (vlax-get-acad-object))
  8.              )
  9.   )
  10.   (if (and (tblsearch "dimstyle" oldname)
  11.            (not (tblsearch "dimstyle" Newname))
  12.       )
  13.     (progn
  14.       (setq ndim (vla-add dims newName))
  15.       (vla-copyfrom (vla-item dims oldname) ndim)
  16.       (vla-put-activedimstyle
  17.         (vla-get-activedocument (vlax-get-acad-object))
  18.         ndim
  19.       )
  20.       (if lst
  21.         (progn
  22.           (mapcar '(lambda (x) (apply 'setvar x)) lst)
  23.           (vl-cmdf ".dimstyle" "s" NewName "Y")
  24.         )
  25.       )
  26.     )
  27.   )
  28. )
  29. ;;功能: 由已有标注样式建立新子标注样式
  30. ;;参数: name ---- 父标注样式
  31. ;;      mod  ---- 子标注类型
  32. ;;                $2 角度标注,$3直径标注,$4 半径标注,$6 坐标标注
  33. ;;      lst  ---- 子标注样式需要修改的系统变量表
  34. (defun mksubdimsty (name mod lst / dims nname)
  35.   (setq        dims (vla-get-dimstyles
  36.                (vla-get-activedocument (vlax-get-acad-object))
  37.              )
  38.   )
  39.   (if (and (tblsearch "dimstyle" name)
  40.            (setq nname (strcat name mod))
  41.            (not (tblsearch "dimstyle" nname))
  42.       )
  43.     (progn
  44.       (vla-put-activedimstyle
  45.         (vla-get-activedocument (vlax-get-acad-object))
  46.         (vla-item dims name)
  47.       )
  48.       (vl-cmdf ".dimstyle" "s" nname)
  49.       (if lst
  50.         (progn
  51.           (mapcar '(lambda (x) (apply 'setvar x)) lst)
  52.           (vl-cmdf ".dimstyle"  "s" nname  "y")
  53.         )
  54.       )
  55.     )
  56.   )
  57.   (princ)
  58. )

应用

  1. (MkDimStyleFrom
  2.   "ISO-25"
  3.   "GB孔"
  4.   '(("DIMTXSTY" "GB孔")
  5.     ("DIMDLI" 7.)
  6.     ("DIMEXE" 2.25)
  7.     ("DIMEXO" 2.)
  8.     ("DIMTXT" 2.5)
  9.    )
  10. )

  11. (mksubdimsty
  12.   "GB孔"
  13.   "$4"
  14.   '(("DIMTOH" 1) ("DIMTIH" 0))
  15. )

点评

感谢大师为论坛作出贡献!  发表于 2014-1-19 15:05
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 5975个

财富等级: 富甲天下

发表于 2014-1-25 14:26:33 | 显示全部楼层
好方法,值得借鉴!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

发表于 2014-2-12 23:52:51 | 显示全部楼层
你把样式,线性,,图层,标注样式什么都建立好,,另存为模板图,,dwt的,那个,,,覆盖acad,dwt,然后op---------文件-----------样板设置-------------快速新建默认样板名------把刚保存的那个acad。dwt放进去,,,应用,保存,,,以后每次打开图纸都有你要的那些样式什么的,,,,,,,,还有你要是不想覆盖默认的acad,样板文件,也可以不存那个名字,,,,别的也可以,,但是要把你存的文件盒acad,dwt,,放在同一个文件夹下面,,
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 14个

财富等级: 恭喜发财

发表于 2016-5-24 17:27:48 | 显示全部楼层
做个记号  用的上
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-18 18:29 , Processed in 0.339847 second(s), 69 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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