明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1292|回复: 8

[提问] entmake 插入带属性文字块

[复制链接]
发表于 2018-7-20 16:42 | 显示全部楼层 |阅读模式
本帖最后由 冒个烟圈 于 2018-7-20 16:59 编辑

ENTMAKE ATTRIB 时属性文字插入点在WCS原点,有没有办法让文字插入点跟随用户鼠标在一个点?
大神们教教我,谢谢!!!
能达到下图右边的效果
以下附上代码
(defun c:NN()  
  (setvar "cmdecho" 0)
  (command ".UNDO" "BE")
  (setq BNO (getint "\n输入整数编号"))
  (if (not (tblsearch "layer" "dim" ))
    (progn (command "layer" "new" "dim" "s" "dim" "C" 3 "" "L" "Continuous" "" "LW" 0.15 "" "")))
  (setq scl (getvar "dimscale"))
  (entmake (list '(0 . "block")'(2 . "BVer")'(70 . 2)'(8 . "dim")(cons 10 '(0.0 0.0 0.0))))   
  (entmake (list '(0 . "LWPOLYLINE")
                 '(100 . "AcDbEntity")
                 '(100 . "AcDbPolyline")
                 '(8 . "dim")
                 '(90 . 6)
                 '(70 . 1)
                 '(10 -0.259808 3.3)
                 '(42 . 0.0)
                 '(10 -2.98779 -1.425)
                 '(42 . 0.57735)
                 '(10 -2.72798 -1.875)
                 '(42 . 0.0)
                 '(10 2.72798 -1.875)
                 '(42 . 0.57735)
                 '(10 2.98779 -1.425)
                 '(42 . 0.0)
                 '(10 0.259808 3.3)
                 '(42 . 0.57735)))         
  (entmake '((0 . "ENDBLK")))                        
    (while
      (setq y1 (getpoint "\n>>>指定放置点:"))
      (entmake (list'(0 . "INSERT")
                    '(100 . "AcDbEntity")
                    '(100 . "AcDbBlockReference")
                    '(66 . 1);;;属性跟随标志,1跟随,0不跟随
                     (cons 2 "BVer")
                     (cons 8 "DIM")
                     (cons 10 y1)
                     (cons 41 scl)
                     (cons 42 scl)
                     (cons 43 scl)))
      (entmake (list'(0 . "ATTRIB")
                    '(100 . "AcDbEntity")
                    '(100 . "AcDbText")
                    '(62 . 4)
                     (cons 8 "DIM")
                     (cons 10 y1)
                     (cons 40 2)
                     (cons 1 (itoa BNO))
                     (cons 72 4)
                    '(100 . "AcDbAttribute")
                     (cons 2 "Ver")
                     (cons 70 0)))
      (entmake '((0 . "SEQEND")))
    )
  (command ".UNDO" "E")
  (princ)
)





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2018-7-21 10:40 | 显示全部楼层
USER2128 发表于 2018-7-21 09:30
其实只要在(list'(0 . "ATTRIB") ... (cons 10 y1) 之后加入一行:
(cons 11 y1)
就行了

(defun c:NN()  
  (setvar "cmdecho" 0)
  (command ".UNDO" "BE")
  (setq BNO (getint "\n输入整数编号"))
  (if (not (tblsearch "layer" "dim" ))
    (progn (command "layer" "new" "dim" "s" "dim" "C" 3 "" "L" "Continuous" "" "LW" 0.15 "" "")))
  (setq scl (getvar "dimscale"))
  (entmake (list '(0 . "block")'(2 . "BVer")'(70 . 2)'(8 . "dim")(cons 10 '(0.0 0.0 0.0))))   
  (entmake (list '(0 . "LWPOLYLINE")
                 '(100 . "AcDbEntity")
                 '(100 . "AcDbPolyline")
                 '(8 . "dim")
                 '(90 . 6)
                 '(70 . 1)
                 '(10 -0.259808 3.3)
                 '(42 . 0.0)
                 '(10 -2.98779 -1.425)
                 '(42 . 0.57735)
                 '(10 -2.72798 -1.875)
                 '(42 . 0.0)
                 '(10 2.72798 -1.875)
                 '(42 . 0.57735)
                 '(10 2.98779 -1.425)
                 '(42 . 0.0)
                 '(10 0.259808 3.3)
                 '(42 . 0.57735)))         
  (entmake '((0 . "ENDBLK")))                        
    (while
      (setq y1 (getpoint "\n>>>指定放置点:"))
      (entmake (list'(0 . "INSERT")
                    '(100 . "AcDbEntity")
                    '(100 . "AcDbBlockReference")
                    '(66 . 1);;;属性跟随标志,1跟随,0不跟随
                     (cons 2 "BVer")
                     (cons 8 "DIM")
                     (cons 10 y1)
                     (cons 41 scl)
                     (cons 42 scl)
                     (cons 43 scl)))
      (entmake (list'(0 . "ATTRIB")
                    '(100 . "AcDbEntity")
                    '(100 . "AcDbText")
                    '(62 . 4)
                     (cons 8 "DIM")
                     (cons 10 y1)
                     (cons 11 y1)
                     (cons 40 2)
                     (cons 1 (itoa BNO))
                     (cons 72 4)
                    '(100 . "AcDbAttribute")
                     (cons 2 "Ver")
                     (cons 70 0)))
      (entmake '((0 . "SEQEND")))
    )
  (command ".UNDO" "E")
  (princ)
)
测试通过
回复 支持 1 反对 0

使用道具 举报

发表于 2018-7-21 08:12 | 显示全部楼层
(cadr (grread t 1)) ;取鼠标所在位置点.
 楼主| 发表于 2018-7-21 08:20 | 显示全部楼层
USER2128 发表于 2018-7-21 08:12
(cadr (grread t 1)) ;取鼠标所在位置点.

(cons 10 (cadr (grread t 1)))这样吗?
具体加到哪处,能否说得详细些,谢谢
发表于 2018-7-21 09:30 | 显示全部楼层
其实只要在(list'(0 . "ATTRIB") ... (cons 10 y1) 之后加入一行:
(cons 11 y1)
就行了
发表于 2018-7-21 10:47 | 显示全部楼层
学习了 只会插入块 属性块还真不会
 楼主| 发表于 2018-7-21 14:04 | 显示全部楼层
lifuq1979 发表于 2018-7-21 10:40
(defun c:NN()  
  (setvar "cmdecho" 0)
  (command ".UNDO" "BE")

多谢指点。。谢谢!
 楼主| 发表于 2018-7-21 14:05 | 显示全部楼层
本帖最后由 冒个烟圈 于 2018-7-21 14:38 编辑
USER2128 发表于 2018-7-21 09:30
其实只要在(list'(0 . "ATTRIB") ... (cons 10 y1) 之后加入一行:
(cons 11 y1)
就行了

谢谢指点,,谢谢!!!
问个题外问题:提问的贴子怎么设置成已解决状态
发表于 2020-2-5 22:01 | 显示全部楼层
组码10和11都要有才得
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-27 04:22 , Processed in 0.283603 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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