whosa 发表于 2022-7-5 16:29:11

2点高度

你好
 
我需要在路面上增加很多点高度,我想使用lisp。
 
需要在路缘线下添加2个点值。
 
第一个(11.11 ex.)位于路缘石下方,第二个(22.22 ex.)位于路缘石下方。
 
我构建了一个具有2个提示值的块:
 
街道。图纸
 
高度_1=11.11
高度2:22.22
 
此lisp应适用于:
 
1: 拾取插入点。
2: 拾取第一个值(Height_1)
3: 选取第二个值(Height_2)
 
通常我使用follow-lisp,但它一次只能添加一个值。
 
(defun c:CRC (/ sp p)
;; Tharwat 15.Feb.2016 ;;
(setq sp
      (vlax-get (vla-get-activelayout
                  (vla-get-ActiveDocument (vlax-get-acad-object)))
                  'Block)
       )
(if (tblsearch "BLOCK" "STREET" )
   (while (setq p (getpoint "\nSpecify point :"))
   (vla-put-textstring
       (car (vlax-invoke
            (vla-insertblock
                sp
                (vlax-3d-point p)
                "STREET"
                1.0
                1.0
                1.0
                0.0)
            'getattributes))
      
(rtos (/ (caddr p) 1000.) 2 2)
       )

   )
   )
(princ)
)(vl-load-com)
 
 

 
 
提前感谢

Aftertouch 发表于 2022-7-5 16:33:49

我会使用:
 

(setvar "ATTDIA" 0 )
(setvar "ATTREQ" 1 )
(command "-insert" "STREET" p "1" "1" "0")

 
由于插入块时ATTREQ变量,itll会询问属性。

whosa 发表于 2022-7-5 16:38:41

谢谢,很遗憾我不知道Lisp代码。你能建议我如何修改lisp吗?
 
谢谢

Tharwat 发表于 2022-7-5 16:41:23

你好
 
您是否在选取两个点后,将其按顺序写入属性块“STREET”?

whosa 发表于 2022-7-5 16:45:36

是的,我想这样做。

Aftertouch 发表于 2022-7-5 16:49:11


(defun c:CRC (/ sp p)
(if (tblsearch "BLOCK" "STREET" )
        (progn
                (setq p (getpoint "\nSpecify point :"))
                (setvar "ATTDIA" 0 )
                (setvar "ATTREQ" 1 )
                (command "-insert" "STREET" p "1" "1" "0")
        )
)
(princ)
)
(vl-load-com)

whosa 发表于 2022-7-5 16:55:01

嗨@Aftertouch,
 
这很好,但我需要手动添加值。我想选取2个点,得到z值,并用它填充属性值
 
谢谢

Tharwat 发表于 2022-7-5 16:58:46

 

(defun c:crc (/ sp p p1 p2 ats)
;; Tharwat 10.Mar.2017 ;;
(setq sp
      (vlax-get (vla-get-activelayout
                  (vla-get-activedocument (vlax-get-acad-object))
                  )
                  'block
      )
)
(if (tblsearch "BLOCK" "STREET")
   (while (and (setq p (getpoint "\nSpecify insertion point :"))
               (setq p1 (getpoint "\nSpecify 1st point :"))
               (setq p2 (getpoint "\nSpecify 2nd point :"))
          )
   (setq ats (vlax-invoke
               (vla-insertblock
                   sp
                   (vlax-3d-point p)
                   "STREET"
                   1.0
                   1.0
                   1.0
                   0.0
               )
               'getattributes
               )
   )
   (mapcar
       '(lambda (at)
          (vla-put-textstring
            at
            (rtos (/ (caddr (if (= (vla-get-tagstring at) "Height_1")
                              p1
                              p2
                            )
                     )
                     1000.
                  )
                  2
                  2
            )
          )
      )
       ats
   )
   )
)
(princ)
)(vl-load-com)

Aftertouch 发表于 2022-7-5 17:02:44

对不起,我误解了这个问题

whosa 发表于 2022-7-5 17:05:28

Tharwat,谢谢你。
 
我尝试了lisp,但在两个不同的点上得到了相同的高度值,z值不同。
页: [1] 2
查看完整版本: 2点高度