乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 77|回复: 9

[编程交流] Textstyle和Dimstyle

[复制链接]

145

主题

590

帖子

446

银币

中流砥柱

Rank: 25

铜币
725
发表于 2022-7-6 11:53:25 | 显示全部楼层 |阅读模式
有人能给我指一个好的lisp来创建和设置文本样式和dimstyle吗??
 
谢谢
回复

使用道具 举报

24

主题

1265

帖子

1028

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
362
发表于 2022-7-6 12:02:27 | 显示全部楼层
创建文本样式的快速简单方法。。。
 
这里的方法更复杂,但适应性更强,还有一种创建dimstyle的方法。。。
回复

使用道具 举报

145

主题

590

帖子

446

银币

中流砥柱

Rank: 25

铜币
725
发表于 2022-7-6 12:09:37 | 显示全部楼层
谢谢你,瑞克,
 
我试着组合一个Lisp来创建一个文本样式,并将图形中的所有文本移动到该样式。这是我到目前为止所做的,但它创建了textstyle,但随后暂停。你能帮忙吗??
 
  1. (defun c:tstyle1 ()
  2. (command "-style" "CCC_Doer" "verdana" "0" "1" "0" "N" "N" "" "")
  3. (setq text1(ssget "x" '((8 . "TEXT"))))
  4. (command "_change" text1 ""  "" "" "CCC_Doer" "" "")
  5. (princ)
  6. )
回复

使用道具 举报

24

主题

1265

帖子

1028

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
362
发表于 2022-7-6 12:18:06 | 显示全部楼层
假设你的新风格存在。。。使用此功能。。。
 
  1. (defun newstyle (name / sset ent lst newlst i)
  2. (setq sset (ssget "_X" '((0 . "TEXT"))) i 0)
  3. (repeat (sslength sset)
  4.    (setq ent (ssname sset i))
  5.    (setq lst (entget ent))
  6.    (setq newlst (subst (cons 7 name)(assoc 7 lst) lst))
  7.    (entmod newlst)
  8.    (setq i (1+ i))
  9. )
  10. )

 
...并这样称呼它(newstyle“MyNewStyleName”)
回复

使用道具 举报

145

主题

590

帖子

446

银币

中流砥柱

Rank: 25

铜币
725
发表于 2022-7-6 12:21:59 | 显示全部楼层
瑞克,这是选择并更改文本,还是像以前一样选择并更改。不确定它是如何结合在一起的。
回复

使用道具 举报

24

主题

1265

帖子

1028

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
362
发表于 2022-7-6 12:31:10 | 显示全部楼层
瑞克?
 
该函数将选择所有文本,并将其更改为作为参数传递的样式名称。
回复

使用道具 举报

145

主题

590

帖子

446

银币

中流砥柱

Rank: 25

铜币
725
发表于 2022-7-6 12:36:27 | 显示全部楼层
对不起,我一定是从旅行途中的某个地方捡到的。我已将其放入lisp中,它运行良好,但在完成所有操作后,命令行显示:
 
命令:DOERVER未知命令“DOERVER”。按F1键获取帮助。
 
  1. (defun c:DoerVer (/ *error* Make_Layer Layers obj ss tag)
  2. (vl-load-com)
  3. (setq Layers
  4.      ; Old Color    ; New Layer     ; Layer Color ; Layer Lineweight
  5.         '((5   . ("CCC_DOER_LA0001"     253          "000"))
  6.           (6   . ("CCC_DOER_LA0002"       7          "000"))
  7.           (3   . ("CCC_DOER_LA0003"      84          "030"))
  8.           (1   . ("CCC_DOER_LA0004"       1          "030"))
  9.           (2   . ("CCC_DOER_LA0005"       2          "000"))
  10.           (nil . ("CCC_DOER_LA0006"       7          "000")))
  11. )
  12. (setq *doc* (cond (*doc*) ((vla-get-ActiveDocument
  13.                               (vlax-get-acad-object)))))
  14. (defun *error* (msg)
  15.    (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
  16.        (princ (strcat "\n** Error: " msg " **")))
  17.    (princ))  
  18. (defun Make_Layer (lay Col LnW)
  19.    (cond (  (tblsearch "LAYER" lay))
  20.          
  21.          (  (setq lObj (vla-add (vla-get-Layers *doc*) lay))
  22.             (vla-put-color lObj Col)
  23.             (vla-put-lineweight lObj
  24.               (eval (read (strcat "acLnWt" LnW)))))))
  25. (mapcar
  26.    (function
  27.      (lambda (x) (apply (function Make_Layer) (cdr x)))) Layers)
  28. (if (ssget "_X")
  29.    (progn
  30.      (vlax-for obj (setq ss (vla-get-ActiveSelectionSet *doc*))
  31.       
  32.        (if (setq tag (assoc (vla-get-color obj) Layers))
  33.          (mapcar
  34.            (function
  35.              (lambda (x y) (vlax-put-property obj x y))) '(color layer)
  36.            (list acByLayer (cadr tag))))
  37.        (if (eq "TEXT" (vla-get-layer obj))
  38.          (vla-put-color obj acByLayer)))
  39.      (vla-delete ss)))
  40. (command "_.-layer" "F" "CCC_DOER_LA0005" "F" "LA0000" "")
  41. (command "-style" "CCC_Doer" "verdana" "0" "1" "0" "N" "N" "")
  42. (setq sset (ssget "_X" '((0 . "TEXT"))) i 0)
  43. (repeat (sslength sset)
  44.    (setq ent (ssname sset i))
  45.    (setq lst (entget ent))
  46.    (setq newlst (subst (cons 7 "CCC_Doer")(assoc 7 lst) lst))
  47.    (entmod newlst)
  48.    (setq i (1+ i))
  49. (princ)
  50. )
  51. (princ)
  52. )

 
这可能是一个括号或什么东西,我没有发现,但任何想法。我包括dxf来测试它。
DOER0002.DXF
回复

使用道具 举报

24

主题

1265

帖子

1028

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
362
发表于 2022-7-6 12:41:12 | 显示全部楼层
我猜是一个命令函数中的一两个多“”。
 
我可以问一下,当(entmake)代码发布在上面时,为什么要使用(command)创建样式吗?
 
使用(命令)功能时,样式尤其有问题,因为提示的数量可能因所选字体而异。
回复

使用道具 举报

145

主题

590

帖子

446

银币

中流砥柱

Rank: 25

铜币
725
发表于 2022-7-6 12:52:56 | 显示全部楼层
嗯,我正在努力掌握lisp,但由于我对代码的理解很好,所以我失败了很多。我使用命令行作为解决方法。
 
不管怎样,我把entmake包括在内,它很管用。
 
谢谢
回复

使用道具 举报

24

主题

1265

帖子

1028

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
362
发表于 2022-7-6 12:58:44 | 显示全部楼层
别担心。。。
 
如果可以避免使用(命令),请这样做。
(command)比(entmake)或(vla add)慢得多。
事实上,如果必须使用命令行,请改用(vl cmdf)函数。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-5 10:17 , Processed in 0.676553 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表