robertbon 发表于 2022-7-5 22:39:31

绘制垂直线

救命啊!我试图编写一个快速lisp例程,从用户选择的点绘制一条垂直线:
 

(defun c:lz()
(setq pt1 (getpoint " Pick Point: "))
(setq x (rtos (car pt1)))
(setq y (rtos (cadr pt1)))
(setq pt2 (strcat x "," y ",100"))
(command "line" pt1 pt2 "")
)

 
e、 g.如果我点击点10,20,它将绘制一条从10,20,0到10,20100的线。
 
如何在不使用字符串的情况下将pt2变量放入line命令?
 
谢谢
 
抢劫

7o7 发表于 2022-7-5 22:52:19

您可以使用(列表(car pt1)(cadr pt1)100)作为pt2

robertbon 发表于 2022-7-5 23:01:30

谢谢,7o7。
 
这是我努力实现的第1阶段,共2阶段:
 
我有两个视口,一个用于平面,一个用于立面。我使用上面的lz例程在平面图中绘制垂直线。然后切换到高程视口,我想将刚刚创建的直线的z值更改为0,相对于高程视口。
 
我该怎么做?
 
谢谢
 
抢劫
 
1、从平面垂直画线
2、我切换到前视图中的vport。
3、我想把直线的z值改为0

robertbon 发表于 2022-7-5 23:13:52



(defun c:lz()
(setq SnapVal (getvar "osmode"))
(setq pt1 (getpoint " Pick Point: "))
(command "osmode" "0")
(setq pt2 (list (car pt1) (cadr pt1) 100))
(command "line" pt1 pt2 "")
(command "osmode" SnapVal)
)

 
2需要改进:
 
1.如果我单击平面图中直线的端点,它会创建一条零长度直线?我在代码中添加了osmode 0,但它并没有解决这个问题。
2.由于舍入精度,直线不是真正垂直的-如果我想用@0,0100代替pt2,我该如何实现?

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

考虑一下这个mod。
 

(defun c:lz (/ p1 )
(while (setq p1 (getpoint "\n Pick Point: "))
   (entmake (list '(0 . "LINE")(cons 10 p1) (cons 11 (polar p1 (/ pi 2.) 100.))))
   )
(princ)
)

robertbon 发表于 2022-7-5 23:28:31

谢谢Tharwat,
 
我已经尝试过这种方法和一些变体,但仍然存在与上面相同的问题:
 
1?在选择拾取点后,我将osmode 0添加到代码中,但它并没有克服这一问题。
2
 
有人能帮我解释一下吗?我正在根据平面图绘制许多立面图,在平面图的每一条垂直线上键入@0,0100,这让我慢慢疯了!
 
抢劫

Tharwat 发表于 2022-7-5 23:32:12

您应该用一个样例图形或一个快照来描述代码的目的。
 
你在WCS工作吗?

Lee Mac 发表于 2022-7-5 23:43:19

相对于UCS的垂直线:
(defun c:vl1 ( / p )
   (if (setq p (getpoint "\nSpecify point for line: "))
       (entmake
         (list
            '(0 . "LINE")
               (cons 10 (trans p 1 0))
               (cons 11 (trans (mapcar '+ p '(0 100 0)) 1 0))
         )
       )
   )
   (princ)
)
 
相对于WCS的垂直线:

(defun c:vl2 ( / p )
   (if (setq p (getpoint "\nSpecify point for line: "))
       (entmake
         (list
            '(0 . "LINE")
               (cons 10 (trans p 1 0))
               (cons 11 (mapcar '+ (trans p 1 0) '(0 100 0)))
         )
       )
   )
   (princ)
)
页: [1]
查看完整版本: 绘制垂直线