changyiran 发表于 2012-9-27 08:38:31

cass中的高程点块参照对象是如何制作的

在caSS上作图时经常要和高程点注记打交道,现在很想知道它的制作原理,有哪位知道的朋友给讲解一下,谢谢!

Gu_xl 发表于 2012-9-27 10:19:20


;;;创建 Cass 高程点 (gxl-cs:gcd 插入点 高程 图块比例 小数位数)
;(setq inspt (getpoint)) (setq scale 0.5) (setq height "AAAA")
(defun gxl-cs:gcd (inspt height scale xsws / pt blkdef obj)
(command "layer" "m" "GCD" "c" "1" "" "L" "CONTINUOUS" """")
(if height
    (setq height (rtos height 2 xsws))
    (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)
             '(-3 ("SOUTH" (1000 . "202101")))
           )
)
;;;插入属性
    (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 0)
          (cons 11 pt)
             '(100 . "AcDbAttribute")
             (cons 2 "height")
             (cons 700)
          (cons 74 2)
           )
)
;;;结束标志
(entmake '((0 . "SEQEND")))
(princ)
)
;;;测试 (gxl-cs:gcd (getpoint) 3.123 0.5 2)

寒潮大冬瓜 发表于 2024-5-20 20:23:05

Gu_xl 发表于 2012-9-27 10:19


大侠好!我尝试通过一条线与N条等高线外观交点粘贴cass高程属性块,这个时候不能实现直接代码输入,辛苦看看什么问题?

寒潮大冬瓜 发表于 2024-5-16 21:10:16

wmz 发表于 2014-10-5 09:28


很棒!ZGCD
Error: 参数类型错误: portp: nil:handshake

changyiran 发表于 2012-9-27 12:54:39

Gu_xl 发表于 2012-9-27 10:19

想不到这么复杂啊,感谢版主,下午一定好好研究下!

soly2006 发表于 2012-9-27 14:52:57

又见版主,学习一下。

byghbcx 发表于 2012-9-27 16:54:07

块属性,地形图中高程的块属性真的很烦,每次改颜色,都要转调它

byghbcx 发表于 2012-9-28 09:19:52

有的块属性颜色是随层、随块的,可以直接更改颜色,有的不改直接改颜色,我一般统一把它转成文字。

xiabin68 发表于 2012-10-6 00:03:09

又学习了,,,,

linshiyin2 发表于 2012-11-10 15:41:54

mark一下,cass的高程点是个头疼的事情,这回可以看看它的结构了

daoshi2902 发表于 2012-12-17 20:23:56

权限不够啊,看不到啊。要求发10贴啊。

daoshi2902 发表于 2012-12-17 20:33:20

好的东西果然都是要加限制才能看的哦。
页: [1] 2 3 4 5
查看完整版本: cass中的高程点块参照对象是如何制作的