乐筑天下

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

[编程交流] 块编辑和旋转lisp req

[复制链接]

32

主题

131

帖子

99

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
160
发表于 2022-7-5 15:54:44 | 显示全部楼层 |阅读模式
嗨,朋友们,
我需要一个lisp文件将块转换为所需格式的文本(如附图所示)。实际上,我的绘图中有很多块,都要转换为下图所示的格式,之前我正在手动执行以下步骤
1、块编辑
2、删除第三行文字(f8007:21-24)。
3.将字体高度更改为2.0,样式为Arial Black
4、退出块编辑器
5.使用ATTSYNC命令反映所有块中所做的更改,
6.选择相似的所有块并旋转到0度。
 
另附。有了这个,请帮帮我。
 
谢谢
Amb。
注释重新排列_1。图纸
165446ovzvzj8o6ovwh58j.jpg
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 15:58:58 | 显示全部楼层
你必须自己解决这个问题。如果你试一试,我会帮你带路。你可以从另一篇文章的代码开始。
回复

使用道具 举报

32

主题

131

帖子

99

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
160
发表于 2022-7-5 16:05:30 | 显示全部楼层
 
嗨,ronjonp,很抱歉回复太晚,我在家乡处理一些紧急工作,
实际上,我不知道这个dxf代码,但正如u所说,我试着通过编辑您之前给定的lisp,
但它没有发生,所以请你检查和引导我请。
 
(defun c:Koo(/a p s)
(entmakex’((0。“样式”)
(100.“AcDbSymbolTableRecord”)
(100.“AcDbTextStyleTableRecord”)
(2.“阿里尔布莱克”)
(70 . 0)
(40 . 0.0)
(41 . 1.0)
(50 . 0.0)
(71 . 0)
(42 . 0.125)
(3.“ariblk.ttf”)
(4 . "")
)
)
(if(setq s(ssget’((0。“insert”)(2。“CUSTOM\u MPE\u EQUIP\u TYPE”)(66.1)))
(foreach b(vl remove if'listp(mapcar'cadr(ssnamex s)))
(和(setq p(cdr(assoc 10(entget b)))
(setq a(vl some’(λ(x))
(if(=“ADRESSE”(vla get tagstring x))
(vla get textstring x)
)
)
(vlax invoke(vlax ename->vla object b)'getattributes)
)
)
(entmake(列表)(0。“文本”)
“(100.“AcDbEntity”)
'(67 . 0)
“(8.“MPE_ANNO”)
'(62 . 1)
“(6.“ByBlock”)
'(100.“AcDbText”)
(cons 10 p)
'(40 . 2.0)
(cons 1 a)
'(50 . 0.0)
'(41 . 1.0)
'(51 . 0.0)
“(7.“阿里亚尔布莱克”)
'(71 . 0)
'(72 . 1)
(cons 11(cdr(assoc 10(entget b)))
'(100.“AcDbText”)
'(73 . 0)
)
)
(entdel b)
)
)
)
(普林斯)
)
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 16:07:26 | 显示全部楼层
下面是一些注释代码。。。请花点时间研究一下。
  1. (defun c:goo (/ a c c2 i p s)
  2. ;; Create 'ArialBlack' Style
  3. (entmakex '((0 . "STYLE")
  4.       (100 . "AcDbSymbolTableRecord")
  5.       (100 . "AcDbTextStyleTableRecord")
  6.       (2 . "ArialBlack")
  7.       (70 . 0)
  8.       (40 . 0.0)
  9.       (41 . 1.0)
  10.       (50 . 0.0)
  11.       (71 . 0)
  12.       (42 . 0.125)
  13.       (3 . "ariblk.ttf")
  14.       (4 . "")
  15.      )
  16. )
  17. (defun _ps (str del / pos)
  18.    (if        (setq pos (vl-string-search del str))
  19.      (vl-remove "" (cons (substr str 1 pos) (_ps (substr str (+ pos 1 (strlen del))) del)))
  20.      (list str)
  21.    )
  22. )
  23. (if (setq s (ssget '((0 . "insert") (2 . "CUSTOM_MPE_EQUIP_TYPE") (66 . 1))))
  24.    (foreach b (vl-remove-if 'listp (mapcar 'cadr (ssnamex s)))
  25.      ;; Get the block insertion point
  26.      (setq p (cdr (assoc 10 (entget b))))
  27.      ;; You have to look for the correct attribute tagnames to populate the correct information
  28.      (foreach x (vlax-invoke (vlax-ename->vla-object b) 'getattributes)
  29. (cond ((= "TYPE" (vla-get-tagstring x)) (setq a (vla-get-textstring x)))
  30.       ((= "READING" (vla-get-tagstring x)) (setq c (_ps (vla-get-textstring x) "\n")))
  31. )
  32.      )
  33.      (if
  34. (progn (entmake
  35.          (list '(0 . "MTEXT")
  36.                '(100 . "AcDbEntity")
  37.                '(67 . 0)
  38.                '(8 . "MPE_ANNO")
  39.                '(62 . 1)
  40.                '(6 . "Continuous")
  41.                '(100 . "AcDbMText")
  42.                (cons 10 p)
  43.                '(40 . 2.0)
  44.                '(41 . 0.0)
  45.                '(46 . 0.0)
  46.                '(71 . 5)
  47.                '(72 . 5)
  48.                ;; Join the resultant text together
  49.                (cons 1
  50.                      (if (and a c)
  51.                        (strcat a
  52.                                "\\P"
  53.                                (cond ((< (length c) 3) (car c))
  54.                                      ((apply 'strcat
  55.                                              (mapcar '(lambda (x) (strcat x "\\P"))
  56.                                                      (list (nth (- (length c) 2) c) (last c))
  57.                                              )
  58.                                       )
  59.                                      )
  60.                                )
  61.                        )
  62.                        "Something is not right!"
  63.                      )
  64.                )
  65.                '(7 . "ArialBlack")
  66.                '(11 1.0 0.0 0.0)
  67.                '(50 . 0.0)
  68.                '(73 . 1)
  69.                '(44 . 1.0)
  70.          )
  71.        )
  72.        ;; Delete the block
  73.        (entdel b)
  74. )
  75.      )
  76.    )
  77. )
  78. (princ)
  79. )
  80. ;; Loads ActiveX extensions
  81. (vl-load-com)

 
下面是如何在论坛中添加代码标签。
回复

使用道具 举报

32

主题

131

帖子

99

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
160
发表于 2022-7-5 16:11:47 | 显示全部楼层
 
 
嗨,Ronjonp,
谢谢你的解释,你能把DXF代码的lisp发给我吗?这对我学习它很有用。
 
另外,在执行给定的lisp时,它显示以下错误,您能检查一下吗
 
; 错误:错误的参数类型:VLA-OBJECT nil
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 16:16:58 | 显示全部楼层
 
再次从上面下载代码。。我转置了一个函数。
回复

使用道具 举报

32

主题

131

帖子

99

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
160
发表于 2022-7-5 16:20:28 | 显示全部楼层
 
嗨,Ronjonp,
非常感谢您的帮助,现在一切都很好,
 
如果可能的话,你能把dxf代码发给我吗?我很想学习这类代码
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 16:22:05 | 显示全部楼层
我不知道你要什么?你可以从这里开始参考。
回复

使用道具 举报

32

主题

131

帖子

99

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
160
发表于 2022-7-5 16:28:31 | 显示全部楼层
 
 
 
 
嗨,Ronjonp,
一些块包含5行(如附件所示),我之前没有注意到,很抱歉。。
所有包含3行的块都可以很好地使用lisp。
你能帮我一下吗。
我试着编辑(setq c(substr c(+2 I)))
但这并没有发生,请帮帮我。
 
实际上,概念是我想在完成后保持多行文字有3行,(第一行以4 FO开头……第二行以F8010开头:……第三行以M开头:600……)
如果块有3行,我需要前2行,
如果块有5行,我需要3行(包括M:600….)
 
希望你能理解我的要求,因为它很紧急,请帮助我。
ronjonp1.dwg
165448lxaabxxbelytmqxv.jpg
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 16:29:24 | 显示全部楼层
替换:
(strcat a“\\P”c)
使用:
(strcat a“\\P”(vl string subst“\\P”“\n”c))
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 21:10 , Processed in 0.385388 second(s), 75 queries .

© 2020-2025 乐筑天下

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