乐筑天下

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

[编程交流] 插入并分解块lisp

[复制链接]

107

主题

615

帖子

575

银币

中流砥柱

Rank: 25

铜币
521
发表于 2022-7-5 23:05:52 | 显示全部楼层 |阅读模式
我使用这个lisp插入块
 
我有两个问题
 
A)
 
  1. (defun c:textblock ()
  2. (COMMAND "_layer" "_m" "text" "_c" "140" "" "")
  3. (setq scl (getvar "useri1"))
  4. (setq scl1 (* scl 1.5))
  5. (setq dt1 (getpoint "\ninsert text block: "))
  6. (command" "*insert" "textblock" dt1 scl1 scl1 "0" )
  7. (princ)
  8. )

 
当块插入到图形中时,会发生旋转
 
我使用的单位是:十进制、米、梯度、北向。
 
图形模板和块的单位设置相同。我不知道为什么。
 
当我使用相同的不带“*”的lisp时,我没有旋转问题,但没有exlope。
 
B) 第二个问题
 
我用这个lisp插入绘图戳记(Rtext)
 
  1. (defun c:dstamp ()
  2. (COMMAND "_layer" "_m" "dstamp" "_c" "140" "" "")
  3. (setq scl (getvar "useri1"))
  4. (setq scl1 (* scl 1.5))
  5. (setq dt1 (getpoint "\ninsert dstamp: "))
  6. (command"insert" "dstamp" dt1 scl1 scl1 "0" )
  7. (princ)
  8. )

 
插入后,我将Rtext分解两次,将其转换为简单文本
 
谢谢
回复

使用道具 举报

1

主题

475

帖子

481

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 23:19:13 | 显示全部楼层
尝试
 
  1. (defun c:textblock ( / DT1 SCL SCL1)
  2. (COMMAND "_layer" "_m" "text" "_c" "140" "" "")
  3. (setq scl (getvar "useri1"))
  4. (setq scl1 (* scl 1.5))
  5. (setq dt1 (getpoint "\ninsert text block: "))
  6. (command "insert" "*textblock" dt1 scl1 "0" )
  7. (princ)
  8. )
  9. (defun c:dstamp ( / DT1 SCL SCL1)
  10. (COMMAND "_layer" "_m" "dstamp" "_c" "140" "" "")
  11. (setq scl (getvar "useri1"))
  12. (setq scl1 (* scl 1.5))
  13. (setq dt1 (getpoint "\ninsert dstamp: "))
  14. (command "insert" "*dstamp" dt1 scl1 "0"
  15. "_.explode" "_L"
  16. "_.explode" "_L")
  17. (princ)
  18. )

 
HTH公司
亨里克
回复

使用道具 举报

107

主题

615

帖子

575

银币

中流砥柱

Rank: 25

铜币
521
发表于 2022-7-5 23:27:44 | 显示全部楼层
谢谢你hmsilva
在dstam(Rtex)中,只有第三行是我使用的dwg文件
 
你能检查一下吗?
D amp。图纸
回复

使用道具 举报

1

主题

475

帖子

481

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 23:39:11 | 显示全部楼层
不客气prodromosm
 
  1. (defun c:dstamp ( / DT1 SCL SCL1)
  2. (COMMAND "_layer" "_m" "dstamp" "_c" "140" "" "")
  3. (setq scl (getvar "useri1"))
  4. (setq scl1 (* scl 1.5))
  5. (setq dt1 (getpoint "\ninsert dstamp: "))
  6. (command "insert" "dstamp" dt1 scl1 scl1 "0")
  7. (command "_.explode" "_L")
  8. (initcommandversion)
  9. (command "_.explode" "_P" "")
  10. (initcommandversion)
  11. (command "_.explode" "_P" "")
  12. (princ)
  13. )

 
HTH公司
亨里克
回复

使用道具 举报

107

主题

615

帖子

575

银币

中流砥柱

Rank: 25

铜币
521
发表于 2022-7-5 23:41:38 | 显示全部楼层
谢谢你hmsilva
回复

使用道具 举报

1

主题

475

帖子

481

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 23:54:11 | 显示全部楼层
不客气prodromosm
很高兴我能帮忙!
 
亨里克
回复

使用道具 举报

VVA

1

主题

308

帖子

308

银币

初来乍到

Rank: 1

铜币
8
发表于 2022-7-5 23:58:12 | 显示全部楼层
其他变体。
使用插入分解块
QAFLAGS=5
不取决于块中Rtext的数量。
  1. (defun c:dstamp ( / DT1 SCL SCL1 SS *error* qf)
  2. (defun *error* ( msg )
  3.    (and qf (setvar 'QAFLAGS qf))
  4.    (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
  5.        (princ (strcat "\n** Error: " msg " **")))
  6.    (princ)
  7. )
  8. (COMMAND "_layer" "_m" "dstamp" "_c" "140" "" "")
  9. (setq scl (getvar "useri1"))
  10. (setq scl1 (* scl 1.5))
  11. (setq dt1 (getpoint "\ninsert dstamp: "))
  12. (mip:mark)  
  13. (command "_-insert" "*dstamp" dt1 scl1 scl1)
  14. (if (setq SS (mip:get-last-ss))
  15. (progn
  16.      (setq qf (getvar 'QAFLAGS))
  17.      (setvar 'QAFLAGS 5)
  18.      (command "_.explode" ss "")
  19.      (setvar 'QAFLAGS qf)
  20.    )
  21. )
  22. )
  23. ;;;* Mark data base to allow KB:catch.
  24. ;;;* http://www.theswamp.org/index.php?topic=15863.0
  25. (defun mip:mark ( )
  26. (if (setq *mip:mark (entlast)) nil
  27.    (progn (entmake '((0 . "point") (10 0.0 0.0 0.0)))
  28.       (setq *mip:mark (entlast))(entdel *mip:mark)))(princ))
  29. ;;;* returns selection set of entities since last mip:mark.
  30. (defun mip:get-last-ss (/ ss tmp val)
  31. (setq val (getvar "cmdecho"))
  32. (setvar "cmdecho" 0)
  33. (if *mip:mark
  34.    (progn (setq ss (ssadd))
  35.           (while (setq *mip:mark (entnext *mip:mark))
  36.             (ssadd *mip:mark ss)
  37.           ) ;_ end of while
  38.           (if (> (sslength ss) 0)
  39.             (progn
  40.               (command "_.select" ss "")
  41.               (setq tmp ss)
  42.             ) ;_ end of progn
  43.             (setq tmp nil)
  44.           ) ;_ end of if
  45.    ) ;_progn
  46.    (alert
  47.      "*mip:mark not set. \n run (mip:mark) before mip:get-last-ss."
  48.    ) ;_ end of alert
  49. ) ;_if
  50. (setvar "cmdecho" val)
  51. tmp
  52. ) ;_ end of defun
回复

使用道具 举报

1

主题

475

帖子

481

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 00:07:03 | 显示全部楼层
你好,VVA,
代码不错。
 
 
但是,您需要分解两次,分解后的Rtext变为多行文字,您需要根据操作要求再次分解为文字。
 
 
如果只在explode命令之前使用initcommandversion函数,将允许选择集作为参数,则无需更改QAFLAGS SysVar来分解选择集。
 
亨里克
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 03:08 , Processed in 0.578551 second(s), 68 queries .

© 2020-2025 乐筑天下

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