找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3256|回复: 26

[求助] 为什么CAD2009用ENTMAKE做INSERT,属性跟随ATTRIB

[复制链接]
发表于 2014-9-20 09:10:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
为什么CAD2009用ENTMAKE做INSERT,属性跟随ATTRIB有3个,在CAD2004测试就可以,在CAD2009就出不来?连块都做不出来?
;40后是文字高,D后是行距
(gc)
(defun gxl-cs:gcd (inspt height scale height2 height3 height4 / pt blkdef obj);展高程点函数(inspt:插入点,heitht:高程值,scale:缩放比例,xsws:高程注记位数)
  (setvar "CMDECHO" 0)
  (command "layer" "m" "tfzj" "c" "1" "" "L" "CONTINUOUS" ""  "")
  ;(if height
    ;(setq height (rtos height 2 3));3为高程注记位数
    ;(setq height "")
  ;)
  (regapp "SOUTH")
  
  ;;;检查字体 "HZ" 是否存在
  (if (not (tblobjname "style" "HZ"))
    (command "style" "HZ" "rs.shx,hztxt.shx" 0 1 0 "" "" "")
  )
  ;;;检查是否存在高程点图块定义
  (if (not (tblobjname "block" "GC200"))
    (progn
      (setq blkdef (vla-Add (vla-get-Blocks (vla-get-ActiveDocument (vlax-get-acad-object))) (vlax-3D-point '(0 0 0)) "GC200"))
      (setq obj
        (vla-AddPolyline
           blkdef
           (vlax-make-variant
              (vlax-safearray-fill
                 (vlax-make-safearray vlax-vbdouble (cons 0 5))
                 '(-0.2 0 0 0.2 0 0)
              )
           )
        )
      )
      (vla-SetBulge obj 0 1) (vla-SetBulge obj 1 1)
      (vla-put-Closed obj :vlax-true)
      (vla-put-ConstantWidth obj 0.4)
    )
  )
  ;;;插入块
  (entmake (list
             '(0 . "INSERT")
             '(100 . "AcDbEntity")
             '(100 . "AcDbBlockReference")
             '(66 . 1);;;属性跟随标志,1跟随,0不跟随
              (cons 2 "GC200")
              (cons 10 inspt)
              (cons 41 scale)
              (cons 42 scale)
              (cons 43 scale)
              (list -3 '("SOUTH" (1000 . "951495418")))
           )
  )
  ;;;插入属性
  (entmake (list
             '(0 . "ATTRIB")
             '(100 . "AcDbEntity")
             '(100 . "AcDbText")
              (cons 10 (setq pt (polar inspt 0 (* 1.2 scale))))
              (cons 40 (* 2.0 scale))
              (cons 50 0)
              (cons 41 0.8)
              (cons 51 0)
              (cons 1 height)
              (cons 7 "HZ")
              (cons 72 2)
              (cons 11 pt)
              '(100 . "AcDbAttribute")
              (cons 2 "height")
              (cons 70  0)
              (cons 74 1)
           )
   )
;;;;;;;;
  (entmake (list
             '(0 . "ATTRIB")
             '(100 . "AcDbEntity")
             '(100 . "AcDbText")
              (cons 62 2)
              (cons 10 pt)
              (cons 40 (* 2.0 scale))
              (cons 50 0)
              (cons 41 0.8)
              (cons 51 0)
              (cons 1 height2)
              (cons 7 "HZ")
              (cons 72 0)
              (cons 11 pt)
              '(100 . "AcDbAttribute")
              (cons 2 "height2")
              (cons 70  0)
              (cons 74 3)
           ))
  ;;;;;;;;;;;;
  (entmake (list
             '(0 . "ATTRIB")
             '(100 . "AcDbEntity")
             '(100 . "AcDbText")
             (cons 62 3)
              (cons 10 pt)
              (cons 40 (* 2.0 scale))
              (cons 50 0)
              (cons 41 0.8)
              (cons 51 0)
              (cons 1 height3)
              (cons 7 "HZ")
              (cons 72 0)
              (cons 73 2)
              (cons 11 pt)
              '(100 . "AcDbAttribute")
              (cons 2 "height3")
              (cons 70  0)
              (cons 74 1)
           ))
  ;;;;;;
(entmake (list
             '(0 . "ATTRIB")
             '(100 . "AcDbEntity")
             '(100 . "AcDbText")
             (cons 62 3)
              (cons 10 (setq pzx0 (polar pt (* 1.5 pi) (* 2 scale))))
              (cons 40 (* 2.0 scale))
              (cons 50 0)
              (cons 41 0.8)
              (cons 51 0)
              (cons 1 height4)
              (cons 7 "HZ")
              (cons 72 0)
              (cons 73 2)
              (cons 11 pzx0)
              '(100 . "AcDbAttribute")
              (cons 2 "height4")
              (cons 70  0)
              (cons 74 3)
           ))
   ;;;结束标志
  (entmake '((0 . "SEQEND")
             (100 . "AcDbEntity")
             (67 . 0)
             (410 . "Model")
             (8 . "0")
            )
  )
   (princ)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun c:pzx (/                 str->pt     _mktext         fl
             lst         nl             _pi2         _3pi
             d                 _Pnts:Center                 _List:FromFile
             String:Split
            )
  
(setq blc (getint "\n请输入比例尺1:"))
  (setvar 'userr1 blc);设置比例尺
  ;(setq zg (* 0.002 blc));字高
  (setq scale (* 0.001 blc));缩放比例


  
  
  (defun String:Split (str delimiter / post strlst stl)
    (if        str
      (progn
        (setq stl (strlen delimiter))
        (while (vl-string-search delimiter str)
          (setq        post   (vl-string-search delimiter str)
                strlst (cons (substr str 1 post) strlst)
                str    (substr str (+ 1 post stl))
          )
        )
        (reverse (vl-remove "" (cons str strlst)))
      )
    )
  )
  (defun _List:FromFile        (fn / f l ll)
    (if        (setq f (open (findfile fn) "r"))
      (progn
        (while (setq l (read-line f))
          (setq ll (cons l ll))
        )
        (close f)
      )
    )
    ll
  )
  (defun XD::Pnt:SetZ (p z)
    (list (car p) (cadr p) z)
  )
  (defun str->pt (str)
    (XD::Pnt:SetZ
      (mapcar 'distof (cdr (String:Split str ",")))
      0.
    )
  )
  (defun _Pnts:Center (p1 p2 p3 /)
    (mapcar '(lambda (x y z)
               (/ (+ x y z) 3.)
             )
            p1
            p2
            p3
    )
  )
  (defun _mktext (p str / txt)
    (entmake (list '(0 . "Text")
                   '(100 . "AcDbEntity")
                   '(100 . "AcDbText")
                   (cons 1 str)
                   (cons 10 p)
                   '(40 . 0.1)
                   '(50 . 0.0)
                   '(41 . 1.0)
                   (cons 7 (getvar "textstyle"))
                   '(71 . 0)
                   '(72 . 4)
                   (cons 11 p)
                   '(73 . 1)
             )
    )
  )
;;;;;;;
(defun getplarea (l)
  (* 0.5
     (apply
       '+
       (mapcar
         '(lambda (a b) (- (* (car a) (cadr b)) (* (car b) (cadr a))))
         l
         (append (cdr l) (list (car l)))
       )
     )
  )
)
;;;;;;;
  (if (setq fl (getfiled "Select Log file" "" "log" 8))
    (progn
      (setq lst         (_List:FromFile fl)
            _pi2 (* pi 0.5)
            _3pi (- _pi2)
            d         0.1
      )
      (while lst
        (setq nl  (cons        (list (car lst)
                              (cadr lst)
                              (caddr lst)
                              (nth 3 lst)
                              (nth 4 lst)
                        )
                        nl
                  )
              lst (cddr (cddddr lst))
        )
      )
(mapcar '(lambda (x / p bh ll )
                 (setq p  (_Pnts:Center
                            (setq pa (str->pt (cadr x)))
                            (setq pb (str->pt (caddr x)))
                            (setq pc (str->pt (cadddr x)))
                          )
                       bh (substr (last x) 7)
                       ll (vl-remove "" (String:Split (car x) " "))
                 )
                 (_mktext (polar p _pi2 d) bh)
                 (_mktext p (strcat (car ll) (cadr ll)))
                 (_mktext (polar p _3pi d) (strcat (caddr ll) (last ll)))
                 (_mktext (polar p _3pi (* 2 d)) (strcat "面积:" (rtos (abs (getplarea (list pa pb pc))) 2 3)))
                 (gxl-cs:gcd p bh scale (strcat (car ll) (cadr ll)) (strcat (caddr ll) (last ll)) (strcat "面积:" (rtos (abs (getplarea (list pa pb pc))) 2 3)))  
               )
              nl
      )












      
    )
  )
  (princ)
)

dtmtf.rar

9.38 KB, 下载次数: 6

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
 楼主| 发表于 2014-9-20 09:49:15 | 显示全部楼层
上面那个是测试文件

点评

entmake 太长了,添加属性用 vla-addattribute blkdef xdata 是在 insert 后添加的  详情 回复 发表于 2014-9-20 10:25
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-9-20 10:25:04 | 显示全部楼层
树櫴希德 发表于 2014-9-20 09:49
上面那个是测试文件


entmake 太长了,添加属性用 vla-addattribute blkdef

xdata 是在 insert 后添加的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-20 10:36:45 | 显示全部楼层
关键是为什么2004可以  2009就不行啊

点评

只能说 Autocad 越来越规范了,以前要求比较松  详情 回复 发表于 2014-9-20 10:50
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-9-20 10:50:08 | 显示全部楼层
本帖最后由 Free-Lancer 于 2014-9-20 10:52 编辑
树櫴希德 发表于 2014-9-20 10:36
关键是为什么2004可以  2009就不行啊

只能说 Autocad 越来越规范了,以前要求比较松
2004 下可以用非属性块,Insert 后再 entmake 属性跟随,CASS 原来一直这样干
可能高版本不允许这样了,只能把属性做到块定义内部
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-20 10:59:49 | 显示全部楼层
cass9.1也是这样干的啊

点评

还是把属性写入块内,在外部不能直接 Explode  详情 回复 发表于 2014-9-20 11:16
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-20 11:05:44 | 显示全部楼层
如果跟随只有一个,就行,多于1个,就不行,但是跟DXF帮助对不上啊
QQ图片20140920105924.jpg
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-9-20 11:16:27 | 显示全部楼层
树櫴希德 发表于 2014-9-20 10:59
cass9.1也是这样干的啊


还是把属性写入块内,在外部不能直接 Explode

  1. (gc)
  2. (defun MakeGcd
  3.        (inspt height scale height2 height3 height4 / pt blkdef obj)
  4.   (setvar "CMDECHO" 0)
  5.   (command "layer" "m" "tfzj" "c" "1" "" "L" "CONTINUOUS" "" "")
  6.   (regapp "SOUTH")
  7.   ;;检查字体 "HZ" 是否存在
  8.   (if (not (tblobjname "style" "HZ"))
  9.     (command "style" "HZ" "rs.shx,hztxt.shx" 0 1 0 "" "" "")
  10.   )
  11.   ;;检查是否存在高程点图块定义
  12.   (if (not (tblobjname "block" "GC200"))
  13.     (progn
  14.       (setq blkdef
  15.                    (vla-Add (fy:acblocks)
  16.                             (vlax-3D-point '(0 0 0))
  17.                             "GC200"
  18.                    )
  19.             obj
  20.                    (vla-AddPolyline
  21.                      blkdef
  22.                      (list->variantarray
  23.                        '(-0.2 0 0 0.2 0 0)
  24.                        vlax-vbdouble
  25.                      )
  26.                    )
  27.       )
  28.       (vla-SetBulge obj 0 1)
  29.       (vla-SetBulge obj 1 1)
  30.       (vla-put-Closed obj :vlax-true)
  31.       (vla-put-ConstantWidth obj 0.4)
  32.       ;;Height, Mode, Prompt, InsertionPoint, Tag, Value
  33.       (vla-addattribute
  34.         blkdef
  35.         height
  36.         acAttributeModePreset
  37.         "height1"
  38.         (vlax-3d-point '(1.2 0. 0.))
  39.         "height1"
  40.         ""
  41.       )
  42.       (vla-addattribute
  43.         blkdef
  44.         height
  45.         acAttributeModePreset
  46.         "height2"
  47.         (vlax-3d-point '(2. 0. 0.))
  48.         "height2"
  49.         ""
  50.       )
  51.       (vla-addattribute
  52.         blkdef
  53.         height
  54.         acAttributeModePreset
  55.         "height3"
  56.         (vlax-3d-point '(1.2 1.2 0.))
  57.         "height3"
  58.         ""
  59.       );_可以在调整对齐方式
  60.     )
  61.   )
  62.   ;;InsertionPoint, Name, Xscale, Yscale, ZScale, Rotation [, Password
  63.   (setq        blkref (vla-insertblock
  64.                  (fy:acspace)
  65.                  (vlax-3d-point inspt)
  66.                  "GC200"
  67.                  scale
  68.                  scale
  69.                  scale
  70.                  0.
  71.                )
  72.         atts   (vlax-invoke blkref 'Getattributes)
  73.   )
  74.   (vla-put-textstring (car atts) height2)
  75.   (vla-put-textstring (cadr atts) height3)
  76.   (vla-put-textstring (last atts) height4)
  77.   (entmod (append (entget (entlast))
  78.                   (list '(-3 '("SOUTH" (1000 . "951495418"))))
  79.           )
  80.   )
  81. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-20 14:18:29 | 显示全部楼层
这种写法好复杂啊,大神

点评

自己整理整理就不复杂了,Blockdef blockref Attribute 还是 Vla 方便  详情 回复 发表于 2014-9-20 14:55
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-9-20 14:55:28 | 显示全部楼层
树櫴希德 发表于 2014-9-20 14:18
这种写法好复杂啊,大神


自己整理整理就不复杂了,Blockdef  blockref Attribute  还是 Vla  方便
  1. (defun MakeGcd (inspt          height    scale     height2        height3
  2.                 height4          /            addattribute        pt
  3.                 blkdef          obj
  4.                )
  5.   ;;((blkdef height prompt point tag)..)
  6.   (defun addattribute (lst /)
  7.     (mapcar '(lambda (x)
  8.                (vla-addattribute
  9.                  (car x)
  10.                  (cadr x)
  11.                  acAttributeModePreset
  12.                  (caddr x)
  13.                  (vlax-3d-point (cadddr x))
  14.                  (last x)
  15.                  ""
  16.                )
  17.              )
  18.             lst
  19.     )
  20.   )
  21.   (setvar "CMDECHO" 0)
  22.   (command "layer" "m" "tfzj" "c" "1" "" "L" "CONTINUOUS" "" "")
  23.   (regapp "SOUTH")
  24.   ;;检查字体 "HZ" 是否存在
  25.   (if (not (tblobjname "style" "HZ"))
  26.     (command "style" "HZ" "rs.shx,hztxt.shx" 0 1 0 "" "" "")
  27.   )
  28.   ;;检查是否存在高程点图块定义
  29.   (if (not (tblobjname "block" "GC200"))
  30.     (progn
  31.       (setq blkdef (vla-Add (fy:acblocks)
  32.                             (vlax-3D-point '(0 0 0))
  33.                             "GC200"
  34.                    )
  35.             obj           (vla-AddPolyline
  36.                      blkdef
  37.                      (list->variantarray
  38.                        '(-0.2 0 0 0.2 0 0)
  39.                        vlax-vbdouble
  40.                      )
  41.                    )
  42.       )
  43.       (vla-SetBulge obj 0 1)
  44.       (vla-SetBulge obj 1 1)
  45.       (vla-put-Closed obj :vlax-true)
  46.       (vla-put-ConstantWidth obj 0.4)
  47.       (addattribute
  48.         (list (list blkdef height "height1" '(1.2 0. 0.) "height1")
  49.               (list blkdef height "height2" '(2.0 0. 0.) "height2")
  50.               (list blkdef height "heihgt3" '(1.2 1.2 0.) "height3")
  51.         )
  52.       )
  53.     )
  54.   )
  55.   ;;InsertionPoint, Name, Xscale, Yscale, ZScale, Rotation
  56.   (setq        blkref (vla-insertblock
  57.                  (fy:acspace)
  58.                  (vlax-3d-point inspt)
  59.                  "GC200"
  60.                  scale
  61.                  scale
  62.                  scale
  63.                  0.
  64.                )
  65.   )
  66.   (mapcar '(lambda (x y)
  67.              (vla-put-textstring x y)
  68.            )
  69.           (vlax-invoke blkref 'Getattributes)
  70.           (list height2 height3 height4)
  71.   )
  72.   (entmod (append (entget (entlast))
  73.                   (list '(-3 '("SOUTH" (1000 . "951495418"))))
  74.           )
  75.   )
  76. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-20 15:27:35 | 显示全部楼层
; 错误: no function definition: FY:ACSPACE还缺少文件

点评

自己搜索下论坛不就有了 [attachimg]10235[/attachimg]  详情 回复 发表于 2014-9-20 15:35
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-9-20 15:35:51 | 显示全部楼层
树櫴希德 发表于 2014-9-20 15:27
; 错误: no function definition: FY:ACSPACE还缺少文件

自己搜索下论坛不就有了

QQ截图20140920153537.png
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-20 15:38:39 | 显示全部楼层
x谢谢版主指点
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-20 15:58:07 | 显示全部楼层
(gc)
(vl-load-com)
;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun fy:acspace nil
  (if (zerop (getvar "tilemode"))
    (vla-get-paperspace (fy:acdoc))
    (fy:acms)
  )
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun FY:acMs nil
  (eval        (list 'defun
              'FY:acMs
              'nil
              (vla-get-modelspace (FY:acdoc))
        )
  )
  (FY:acMs)
)
;;;;;;;;;;;;;;;;;;;;;;;;;
(defun Fy:acDoc        nil
  (eval        (list 'defun
              'FY:acdoc
              'nil
              (vla-get-activedocument (vlax-get-acad-object))
        )
  )
  (fy:acdoc)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;




(defun MakeGcd (inspt          height    scale     height2        height3
                height4          /            addattribute        pt
                blkdef          obj
               )
  ;;((blkdef height prompt point tag)..)
  (defun addattribute (lst /)
    (mapcar '(lambda (x)
               (vla-addattribute
                 (car x)
                 (cadr x)
                 acAttributeModePreset
                 (caddr x)
                 (vlax-3d-point (cadddr x))
                 (last x)
                 ""
               )
             )
            lst
    )
  )
  (setvar "CMDECHO" 0)
  (command "layer" "m" "tfzj" "c" "1" "" "L" "CONTINUOUS" "" "")
  (regapp "SOUTH")
  ;;检查字体 "HZ" 是否存在
  (if (not (tblobjname "style" "HZ"))
    (command "style" "HZ" "rs.shx,hztxt.shx" 0 1 0 "" "" "")
  )
  ;;检查是否存在高程点图块定义
  (if (not (tblobjname "block" "GC200"))
    (progn
      (setq blkdef (vla-Add (fy:acblocks)
                            (vlax-3D-point '(0 0 0))
                            "GC200"
                   )
            obj           (vla-AddPolyline
                     blkdef
                     (list->variantarray
                       '(-0.2 0 0 0.2 0 0)
                       vlax-vbdouble
                     )
                   )
      )
      (vla-SetBulge obj 0 1)
      (vla-SetBulge obj 1 1)
      (vla-put-Closed obj :vlax-true)
      (vla-put-ConstantWidth obj 0.4)
      (addattribute
        (list (list blkdef height "height1" '(1.2 0. 0.) "height1")
              (list blkdef height "height2" '(2.0 0. 0.) "height2")
              (list blkdef height "heihgt3" '(1.2 1.2 0.) "height3")
        )
      )
    )
  )
  ;;InsertionPoint, Name, Xscale, Yscale, ZScale, Rotation
  (setq        blkref (vla-insertblock
                 (fy:acspace)
                 (vlax-3d-point inspt)
                 "GC200"
                 scale
                 scale
                 scale
                 0.
               )
  )
  (mapcar '(lambda (x y)
             (vla-put-textstring x y)
           )
          (vlax-invoke blkref 'Getattributes)
          (list height2 height3 height4)
  )
  (entmod (append (entget (entlast))
                  (list (list -3 '("SOUTH" (1000 . "951495418"))))
          )
  )
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun c:pzx (/                 str->pt     _mktext         fl
             lst         nl             _pi2         _3pi
             d                 _Pnts:Center                 _List:FromFile
             String:Split
            )

(setq blc (getint "\n请输入比例尺1:"))
  (setvar 'userr1 blc);设置比例尺
  ;(setq zg (* 0.002 blc));字高
  (setq scale (* 0.001 blc));缩放比例



  (defun String:Split (str delimiter / post strlst stl)
    (if        str
      (progn
        (setq stl (strlen delimiter))
        (while (vl-string-search delimiter str)
          (setq        post   (vl-string-search delimiter str)
                strlst (cons (substr str 1 post) strlst)
                str    (substr str (+ 1 post stl))
          )
        )
        (reverse (vl-remove "" (cons str strlst)))
      )
    )
  )
  (defun _List:FromFile        (fn / f l ll)
    (if        (setq f (open (findfile fn) "r"))
      (progn
        (while (setq l (read-line f))
          (setq ll (cons l ll))
        )
        (close f)
      )
    )
    ll
  )
  (defun XD::Pnt:SetZ (p z)
    (list (car p) (cadr p) z)
  )
  (defun str->pt (str)
    (XD::Pnt:SetZ
      (mapcar 'distof (cdr (String:Split str ",")))
      0.
    )
  )
  (defun _Pnts:Center (p1 p2 p3 /)
    (mapcar '(lambda (x y z)
               (/ (+ x y z) 3.)
             )
            p1
            p2
            p3
    )
  )
  (defun _mktext (p str / txt)
    (entmake (list '(0 . "Text")
                   '(100 . "AcDbEntity")
                   '(100 . "AcDbText")
                   (cons 1 str)
                   (cons 10 p)
                   '(40 . 0.1)
                   '(50 . 0.0)
                   '(41 . 1.0)
                   (cons 7 (getvar "textstyle"))
                   '(71 . 0)
                   '(72 . 4)
                   (cons 11 p)
                   '(73 . 1)
             )
    )
  )
;;;;;;;
(defun getplarea (l)
  (* 0.5
     (apply
       '+
       (mapcar
         '(lambda (a b) (- (* (car a) (cadr b)) (* (car b) (cadr a))))
         l
         (append (cdr l) (list (car l)))
       )
     )
  )
)
;;;;;;;
  (if (setq fl (getfiled "Select Log file" "" "log" 8))
    (progn
      (setq lst         (_List:FromFile fl)
            _pi2 (* pi 0.5)
            _3pi (- _pi2)
            d         0.1
      )
      (while lst
        (setq nl  (cons        (list (car lst)
                              (cadr lst)
                              (caddr lst)
                              (nth 3 lst)
                              (nth 4 lst)
                        )
                        nl
                  )
              lst (cddr (cddddr lst))
        )
      )
(mapcar '(lambda (x / p bh ll )
                 (setq p  (_Pnts:Center
                            (setq pa (str->pt (cadr x)))
                            (setq pb (str->pt (caddr x)))
                            (setq pc (str->pt (cadddr x)))
                          )
                       bh (substr (last x) 7)
                       ll (vl-remove "" (String:Split (car x) " "))
                 )
                 (_mktext (polar p _pi2 d) bh)
                 (_mktext p (strcat (car ll) (cadr ll)))
                 (_mktext (polar p _3pi d) (strcat (caddr ll) (last ll)))
                 (_mktext (polar p _3pi (* 2 d)) (strcat "面积:" (rtos (abs (getplarea (list pa pb pc))) 2 3)))
                 (MakeGcd p bh scale (strcat (car ll) (cadr ll)) (strcat (caddr ll) (last ll)) (strcat "面积:" (rtos (abs (getplarea (list pa pb pc))) 2 3)))  
               )
              nl
      )







    )
  )
  (princ)
)


把高程点终于展出来了,就是没有其他数据?

QQ截图20140920155413.jpg

点评

双击看看有没有属性  详情 回复 发表于 2014-9-20 16:01
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-9-20 16:01:51 | 显示全部楼层
树櫴希德 发表于 2014-9-20 15:58
(gc)
(vl-load-com)
;;;;;;;;;;;;;;;;;;;;;;;;;;;

双击看看有没有属性
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-5-12 07:09 , Processed in 0.237205 second(s), 60 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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