明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2549|回复: 13

如何动态显示块属性—— 请高手帮忙修改(源码已给出)

  [复制链接]
发表于 2011-12-7 18:44:26 | 显示全部楼层 |阅读模式
本帖最后由 qcw911 于 2011-12-8 08:13 编辑


(setq ENT_SELP (ssget ENT_PT2 '((0 . "INSERT") (66 . 1))))
ENT_PT2 为点
这样为什么不行
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2011-12-7 19:07:56 | 显示全部楼层
怎么不行?
语法应该没问题。
在某点选择属性块。
 楼主| 发表于 2011-12-7 19:20:30 | 显示全部楼层
  1. ;;;??信息
  2. ;;;Copyrignt chengqiang Lin 2009 for mengyang(作者:林承?)
  3. (defun c:vh ()
  4.   (setq        AcadObject   (vlax-get-acad-object)
  5.         AcadDocument (vla-get-ActiveDocument Acadobject)
  6.         mSpace             (vla-get-ModelSpace Acaddocument)
  7.   )
  8.   (defun DEL_DD        ()
  9.     (if        (/= SOLD_list nil)
  10.       (progn
  11.         (if (/= ENT_SELP nil)
  12.           (entupd ENT_SELP_1)
  13.           (princ)
  14.         )
  15.         (entdel SOLD_list)
  16.         (entdel SOLD_list_t1)
  17.         (entdel SOLD_list_t2)
  18.         (entdel SOLD_list_t3)
  19.         (entdel SOLD_list_t4)
  20.         (entdel SOLD_list_t5)
  21.         (setq SOLD_list nil)
  22.       )
  23.       (princ)
  24.     )
  25.   )
  26.   (setq *error* VHerror)
  27.   (princ "\n-->移動鼠標到任意對象可?詢信息,按右鍵退出:")
  28.   (setq tt nil)
  29.   (while (= tt nil)
  30.     (setq VIEW (* 1.5(getvar "viewsize")));qiuw1
  31.     (setq ENT_PT1 (grread t 1))
  32.     (DEL_DD)
  33.     (if        (or (= (car ENT_PT1) 5) (= (car ENT_PT1) 12))
  34.       (progn
  35.         (setq ENT_PT2 (car (cdr ENT_PT1)))
  36. ;;;        (setq ENT_SELP (ssget ENT_PT2))
  37.         (setq ENT_SELP (ssget ENT_PT2 '((0 . "INSERT") (66 . 1))))
  38.         (if (/= ENT_SELP nil)
  39.           (progn
  40.             (setq ENT_SELP_1 (ssname ENT_SELP 0))
  41.             (setq pt1 ENT_PT2)
  42.             (redraw (ssname ENT_SELP 0) 3)
  43.             (setq ENT_S (entget (ssname ENT_SELP 0)))
  44.             (setq entovlx (vlax-ename->vla-object (ssname ENT_SELP 0)))

  45. ;;;           (setq att (vlax-invoke entovlx 'GetAttributes))
  46. ;;;           (setq lst (mapcar '(lambda (x)
  47. ;;;                     (list (vla-get-tagString x)
  48. ;;;                           (vla-get-textstring x)
  49. ;;;                     )
  50. ;;;                   )
  51. ;;;                 )
  52. ;;;           )
  53.             (setq ENT_MS (cdr (assoc 0 ENT_S)))
  54.             (cond
  55.               ((= ENT_MS "LINE")
  56.                (setq t1 "【直線】")
  57.                (setq t2        (strcat        "長度:"
  58.                                 (rtos (vla-get-Length entovlx)
  59.                                 )
  60.                         )
  61.                )
  62.                (setq t3
  63.                       (strcat "角度:"
  64.                               (rtos (/ (* (angle (cdr (assoc 10 ENT_S))
  65.                                                  (cdr (assoc 11 ENT_S))
  66.                                           )
  67.                                           180
  68.                                        )
  69.                                        pi
  70.                                     )
  71.                               )
  72.                       )
  73.                )
  74.                (setq t4
  75.                       (strcat
  76.                         "起点:"
  77.                         (strcat        (rtos (car (cdr (assoc 10 ENT_S))) 2 2)
  78.                                 ","
  79.                                 (rtos (cadr (cdr (assoc 10 ENT_S))) 2 2)
  80.                                 ","
  81.                                 (rtos (caddr (cdr (assoc 10 ENT_S))) 2 2)
  82.                         )
  83.                       )
  84.                )
  85.                (setq t5
  86.                       (strcat
  87.                         "終点:"
  88.                         (strcat        (rtos (car (cdr (assoc 11 ENT_S))) 2 2)
  89.                                 ","
  90.                                 (rtos (cadr (cdr (assoc 11 ENT_S))) 2 2)
  91.                                 ","
  92.                                 (rtos (caddr (cdr (assoc 11 ENT_S))) 2 2)
  93.                         )
  94.                       )
  95.                )
  96.               )
  97.               ((= ENT_MS "INSERT")
  98.                (setq t1 "【図塊】")
  99.                (setq t2 (strcat "塊名:" (cdr (assoc 2 ENT_S))))
  100.                (setq
  101.                  t3 (strcat "角度:" (angtos (cdr (assoc 50 ENT_S))))
  102.                )
  103.                (setq t4 (strcat "図層:" (cdr (assoc 8 ENT_S))))
  104.                (setq t5
  105.                       (strcat
  106.                         "基点:"
  107.                         (strcat        (rtos (car (cdr (assoc 10 ENT_S))) 2 2)
  108.                                 ","
  109.                                 (rtos (cadr (cdr (assoc 10 ENT_S))) 2 2)
  110.                                 ","
  111.                                 (rtos (caddr (cdr (assoc 10 ENT_S))) 2 2)
  112.                         )
  113.                       )
  114.                )
  115.               )
  116.               ((= ENT_MS "TEXT")
  117.                (setq t1 "【文字】")
  118.                (setq t2 (strcat "内容:" (cdr (assoc 1 ENT_S))))
  119.                (setq t3 (strcat "文字樣式:" (cdr (assoc 7 ENT_S))))
  120.                (setq
  121.                  t4 (strcat "文字高度:" (rtos (cdr (assoc 40 ENT_S))))
  122.                )
  123.                (setq t5
  124.                       (strcat
  125.                         "基点:"
  126.                         (strcat        (rtos (car (cdr (assoc 10 ENT_S))) 2 2)
  127.                                 ","
  128.                                 (rtos (cadr (cdr (assoc 10 ENT_S))) 2 2)
  129.                                 ","
  130.                                 (rtos (caddr (cdr (assoc 10 ENT_S))) 2 2)
  131.                         )
  132.                       )
  133.                )
  134.               )
  135.               ((= ENT_MS "DIMENSION")
  136.                (setq t1 "【標注尺寸】")
  137.                (setq t2 (strcat "内容:" (cdr (assoc 1 ENT_S))))
  138.                (setq t3 (strcat "標注樣式:" (cdr (assoc 3 ENT_S))))
  139.                (setq t4 (strcat "図層:" (cdr (assoc 8 ENT_S))))
  140.                (setq t5
  141.                       (strcat
  142.                         "基点:"
  143.                         (strcat        (rtos (car (cdr (assoc 10 ENT_S))) 2 2)
  144.                                 ","
  145.                                 (rtos (cadr (cdr (assoc 10 ENT_S))) 2 2)
  146.                                 ","
  147.                                 (rtos (caddr (cdr (assoc 10 ENT_S))) 2 2)
  148.                         )
  149.                       )
  150.                )
  151.               )
  152.               ((= ENT_MS "MTEXT")
  153.                (setq t1 "【多行文字】")
  154.                (setq t2 (strcat "図層:" (cdr (assoc 8 ENT_S))))
  155.                (setq t3 (strcat "文字樣式:" (cdr (assoc 7 ENT_S))))
  156.                (setq
  157.                  t4 (strcat "文字高度:" (rtos (cdr (assoc 40 ENT_S))))
  158.                )
  159.                (setq t5
  160.                       (strcat
  161.                         "基点:"
  162.                         (strcat        (rtos (car (cdr (assoc 10 ENT_S))) 2 2)
  163.                                 ","
  164.                                 (rtos (cadr (cdr (assoc 10 ENT_S))) 2 2)
  165.                                 ","
  166.                                 (rtos (caddr (cdr (assoc 10 ENT_S))) 2 2)
  167.                         )
  168.                       )
  169.                )
  170.               )
  171.               ((= ENT_MS "HATCH")
  172.                (setq t1 "【邊界填充】")
  173.                (setq t2 (strcat "図層:" (cdr (assoc 8 ENT_S))))
  174.                (setq t3 (strcat "填充樣式:" (cdr (assoc 2 ENT_S))))
  175.                (setq
  176.                  t4 (strcat "填充比例:" (rtos (cdr (assoc 41 ENT_S))))
  177.                )
  178.                (setq t5
  179.                       (strcat
  180.                         "基点:"
  181.                         (strcat        (rtos (car (cdr (assoc 10 ENT_S))) 2 2)
  182.                                 ","
  183.                                 (rtos (cadr (cdr (assoc 10 ENT_S))) 2 2)
  184.                                 ","
  185.                                 (rtos (caddr (cdr (assoc 10 ENT_S))) 2 2)
  186.                         )
  187.                       )
  188.                )
  189.               )
  190.               ((= ENT_MS "LWPOLYLINE")
  191.                (setq t1 "【多段線】")
  192.                (setq t2 (strcat "図層:" (cdr (assoc 8 ENT_S))))
  193.                (setq t3        (strcat        "長度:"
  194.                                 (rtos (vla-get-Length entovlx)
  195.                                 )
  196.                         )
  197.                )
  198.                (setq t4 (strcat "面積:" (rtos (vla-get-Area entovlx))))
  199.                (setq t5
  200.                       (strcat
  201.                         "起点:"
  202.                         (strcat        (rtos (car (cdr (assoc 10 ENT_S))) 2 2)
  203.                                 ","
  204.                                 (rtos (cadr (cdr (assoc 10 ENT_S))) 2 2)
  205.                                 ","
  206.                                 (rtos 0)
  207.                         )
  208.                       )
  209.                )
  210.               )
  211.               ((= ENT_MS "CIRCLE")
  212.                (setq t1 "【圓】")
  213.                (setq t2 (strcat "図層:" (cdr (assoc 8 ENT_S))))
  214.                (setq t3        (strcat        "直径:"
  215.                                 "%%C"
  216.                                 (rtos (* (cdr (assoc 40 ENT_S)) 2))
  217.                         )
  218.                )
  219.                (setq t4 (strcat "面積:" (rtos (vla-get-Area entovlx))))
  220.                (setq t5
  221.                       (strcat
  222.                         "圓心:"
  223.                         (strcat        (rtos (car (cdr (assoc 10 ENT_S))) 2 2)
  224.                                 ","
  225.                                 (rtos (cadr (cdr (assoc 10 ENT_S))) 2 2)
  226.                                 ","
  227.                                 (rtos 0)
  228.                         )
  229.                       )
  230.                )
  231.               )
  232.               ((= ENT_MS "ARC")
  233.                (setq t1 "【圓弧】")
  234.                (setq t2 (strcat "図層:" (cdr (assoc 8 ENT_S))))
  235.                (setq
  236.                  t3 (strcat "半径:" "R" (rtos (cdr (assoc 40 ENT_S))))
  237.                )
  238.                (setq
  239.                  t4 (strcat "長度:" (rtos (vla-get-ArcLength entovlx)))
  240.                )
  241.                (setq t5
  242.                       (strcat
  243.                         "圓心:"
  244.                         (strcat        (rtos (car (cdr (assoc 10 ENT_S))) 2 2)
  245.                                 ","
  246.                                 (rtos (cadr (cdr (assoc 10 ENT_S))) 2 2)
  247.                                 ","
  248.                                 (rtos 0)
  249.                         )
  250.                       )
  251.                )
  252.               )
  253.               ((= ENT_MS "ELLIPSE")
  254.                (setq t1 "【橢圓】")
  255.                (setq t2 (strcat "図層:" (cdr (assoc 8 ENT_S))))
  256.                (setq t3        (strcat        "半径比例:"
  257.                                 (rtos (vla-get-RadiusRatio entovlx))
  258.                         )
  259.                )
  260.                (setq t4
  261.                       (strcat "面積:" (rtos (vlax-curve-getArea entovlx)))
  262.                )
  263.                (setq t5
  264.                       (strcat
  265.                         "中心点:"
  266.                         (strcat        (rtos (car (cdr (assoc 10 ENT_S))) 2 2)
  267.                                 ","
  268.                                 (rtos (cadr (cdr (assoc 10 ENT_S))) 2 2)
  269.                                 ","
  270.                                 (rtos 0)
  271.                         )
  272.                       )
  273.                )
  274.               )
  275.               ((= ENT_MS "TOLERANCE")
  276.                (setq t1 "【公差】")
  277.                (setq t2 (strcat "図層:" (cdr (assoc 8 ENT_S))))
  278.                (setq t3 (strcat "標注樣式" (cdr (assoc 3 ENT_S))))
  279.                (setq t4 (strcat "空間:" "模型空間"))
  280.                (setq t5
  281.                       (strcat
  282.                         "基点:"
  283.                         (strcat        (rtos (car (cdr (assoc 10 ENT_S))) 2 2)
  284.                                 ","
  285.                                 (rtos (cadr (cdr (assoc 10 ENT_S))) 2 2)
  286.                                 ","
  287.                                 (rtos 0)
  288.                         )
  289.                       )
  290.                )
  291.               )
  292.               ((= ENT_MS "LEADER")
  293.                (setq t1 "【箭頭】")
  294.                (setq t2 (strcat "図層:" (cdr (assoc 8 ENT_S))))
  295.                (setq t3 (strcat "標注樣式:" (cdr (assoc 3 ENT_S))))
  296.                (setq t4
  297.                       (strcat "顏色:"
  298.                               (rtos (vla-get-DimensionLineColor entovlx))
  299.                       )
  300.                )
  301.                (setq t5
  302.                       (strcat
  303.                         "基点:"
  304.                         (strcat        (rtos (car (cdr (assoc 10 ENT_S))) 2 2)
  305.                                 ","
  306.                                 (rtos (cadr (cdr (assoc 10 ENT_S))) 2 2)
  307.                                 ","
  308.                                 (rtos 0)
  309.                         )
  310.                       )
  311.                )
  312.               )
  313.               ((= ENT_MS "SPLINE")
  314.                (setq t1 "【樣条曲線】")
  315.                (setq t2 (strcat "図層:" (cdr (assoc 8 ENT_S))))
  316.                (setq
  317.                  t3 (strcat "長度:" (rtos (vla-get-ArcLength entovlx)))
  318.                )
  319.                (setq t4        (strcat        "長度:"
  320.                                 (rtos (vlax-curve-getEndParam entovlx)
  321.                                 )
  322.                         )
  323.                )
  324.                (setq t5 (strcat "空間:" (cdr (assoc 410 ENT_S))))
  325.               )
  326.               ((= ENT_MS "POLYLINE")
  327.                (setq t1 "【三維条曲線】")
  328.                (setq t2 (strcat "??:" (cdr (assoc 8 ENT_S))))
  329.                (setq
  330.                  t3 (strcat "長度:"
  331.                             (rtos (vlax-curve-getEndParam entovlx))
  332.                     )
  333.                )
  334.                (setq t4
  335.                       (strcat "面積:" (rtos (vlax-curve-getArea entovlx)))
  336.                )
  337.                (setq t5 (strcat "空間:" (cdr (assoc 410 ENT_S))))
  338.               )
  339.             )
  340.             (setq TTS (max (strlen t1)
  341.                            (strlen t2)
  342.                            (strlen t3)
  343.                            (strlen t4)
  344.                            (strlen t5)
  345.                       )
  346.             )
  347.             (setq pt2 (polar pt1 (angtof "0") (/ (* VIEW TTS) 60)))
  348.             (setq pt3 (polar pt2 (angtof "270") (/ VIEW 6)))
  349.             (setq pt4 (polar pt3 (angtof "180") (/ (* VIEW TTS) 60)))
  350.             (setq tx0 (polar pt1 (angtof "0") (/ (/ VIEW 6) 6)))
  351.             (setq tx1 (polar tx0 (angtof "270") (/ (/ VIEW 6) 6)))
  352.             (setq tx2 (polar pt1 (angtof "270") (/ (/ VIEW 6) 2.5)))
  353.             (setq tx3 (polar tx2 (angtof "270") (/ (/ VIEW 6) 6)))
  354.             (setq tx4 (polar tx3 (angtof "270") (/ (/ VIEW 6) 6)))
  355.             (setq tx5 (polar tx4 (angtof "270") (/ (/ VIEW 6) 6)))
  356.             (setq txscale (/ VIEW 65))
  357.             (setq
  358.               SOLD_list
  359.                (entmakex
  360.                  (list (cons 0 "SOLID")
  361.                        (cons 100 "AcDbEntity")
  362.                        (cons 62 178);qiuw1
  363.                        (cons 100 "AcDbTrace")
  364.                        (cons 10 pt1)
  365.                        (cons 11 pt2)
  366.                        (cons 12 pt4)
  367.                        (cons 13 pt3)
  368.                        (cons 210 (trans (getvar "viewdir") 1 0))
  369.                  )
  370.                )
  371.             )
  372.             (setq
  373.               SOLD_list_t1
  374.                (entmakex
  375.                  (list (cons 0 "TEXT")
  376.                        (cons 100 "AcDbEntity")
  377.                        (cons 8 "MAIN")
  378.                        (cons 100 "AcDbText")
  379.                        (cons 10 tx1)
  380.                        (cons 40 txscale)
  381.                        (cons 1 t1)
  382.                        (cons 41 0.8)
  383.                        (cons 7 "Standard")
  384.                        (cons 41 1)
  385.                        (cons 210 (trans (getvar "viewdir") 1 0))
  386.                  )
  387.                )
  388.             )
  389.             (setq
  390.               SOLD_list_t2
  391.                (entmakex
  392.                  (list (cons 0 "TEXT")
  393.                        (cons 100 "AcDbEntity")
  394.                        (cons 8 "MAIN")
  395.                        (cons 100 "AcDbText")
  396.                        (cons 10 tx2)
  397.                        (cons 40 txscale)
  398.                        (cons 1 t2)
  399.                        (cons 41 0.8)
  400.                        (cons 7 "Standard")
  401.                        (cons 41 1)
  402.                        (cons 210 (trans (getvar "viewdir") 1 0))
  403.                  )
  404.                )
  405.             )
  406.             (setq
  407.               SOLD_list_t3
  408.                (entmakex
  409.                  (list (cons 0 "TEXT")
  410.                        (cons 100 "AcDbEntity")
  411.                        (cons 8 "MAIN")
  412.                        (cons 100 "AcDbText")
  413.                        (cons 10 tx3)
  414.                        (cons 40 txscale)
  415.                        (cons 1 t3)
  416.                        (cons 41 0.8)
  417.                        (cons 7 "Standard")
  418.                        (cons 41 1)
  419.                        (cons 210 (trans (getvar "viewdir") 1 0))
  420.                  )
  421.                )
  422.             )
  423.             (setq
  424.               SOLD_list_t4
  425.                (entmakex
  426.                  (list (cons 0 "TEXT")
  427.                        (cons 100 "AcDbEntity")
  428.                        (cons 8 "MAIN")
  429.                        (cons 100 "AcDbText")
  430.                        (cons 10 tx4)
  431.                        (cons 40 txscale)
  432.                        (cons 1 t4)
  433.                        (cons 41 0.8)
  434.                        (cons 7 "Standard")
  435.                        (cons 41 1)
  436.                        (cons 210 (trans (getvar "viewdir") 1 0))
  437.                  )
  438.                )
  439.             )
  440.             (setq
  441.               SOLD_list_t5
  442.                (entmakex
  443.                  (list (cons 0 "TEXT")
  444.                        (cons 100 "AcDbEntity")
  445.                        (cons 8 "MAIN")
  446.                        (cons 100 "AcDbText")
  447.                        (cons 10 tx5)
  448.                        (cons 40 txscale)
  449.                        (cons 1 t5)
  450.                        (cons 41 0.8)
  451.                        (cons 7 "Standard")
  452.                        (cons 41 1)
  453.                        (cons 210 (trans (getvar "viewdir") 1 0))
  454.                  )
  455.                )
  456.             )
  457.           )
  458.           (progn
  459.             (DEL_DD)
  460.           )
  461.         )
  462.       )
  463.       (progn
  464.         (setq tt 1)
  465.         (DEL_DD)
  466.       )
  467.     )
  468.   )
  469. )
  470. (defun VHerror (msg1)
  471.   (setq msg1 "\n***提示:***")
  472.   (setq        msg2
  473.          "\n***程序被中断***"
  474.   )
  475.   (setq tt 1)
  476.   (princ msg1)
  477.   (princ msg2)
  478.   (DEL_DD)
  479.   (setq *error* olderror)
  480. )
发表于 2011-12-7 20:18:40 | 显示全部楼层
  用的着这长的代码吗?试试用通用函数  简化
 楼主| 发表于 2011-12-8 08:12:00 | 显示全部楼层
【KAIXIN】 发表于 2011-12-7 20:18
用的着这长的代码吗?试试用通用函数  简化

如何用上面的函数修改成
动态显示块属性的呢
(vl-load-com)
(defun c:bte ()
    (setq ss (ssget '((0 . "INSERT") (66 . 1))))
    (setq en (vlax-ename->vla-object (ssname ss 0)))
    (setq att (vlax-invoke en 'GetAttributes))
    (mapcar '(lambda (x)
               (list (vla-get-tagString x)
                     (vla-get-textstring x)
             ))
             att
    )
)
这个函数是获取块属性的
我是新人
帮帮忙
发表于 2011-12-8 08:31:43 | 显示全部楼层
grread  你去查查这个函数的用法,因为动态的,我也没接触过
 楼主| 发表于 2011-12-8 08:41:35 | 显示全部楼层
【KAIXIN】 发表于 2011-12-8 08:31
grread  你去查查这个函数的用法,因为动态的,我也没接触过

改改就可以吧,试了好久没成功
发表于 2011-12-8 08:43:47 | 显示全部楼层
发表于 2011-12-8 09:01:52 | 显示全部楼层
要求 (entnext (ssname ss 0)),才是ATTRIB,才可以有tagString、extstring属性
 楼主| 发表于 2011-12-8 09:12:50 | 显示全部楼层
byghbcx 发表于 2011-12-8 09:01
要求 (entnext (ssname ss 0)),才是ATTRIB,才可以有tagString、extstring属性

对啊 这也是问题啊
上面的程序时动态显示 层 什么的
我想让它显示属性
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-7-23 11:56 , Processed in 0.294113 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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