mdbdesign 发表于 2022-7-5 23:34:54

线路定位在限制范围内

如图所示:我如何在lisp的帮助下做到这一点?
试图在AutoCAD上定位它,但不知道如何在没有尝试和错误的情况下定位。脑死亡阶段。请帮忙。
轴0X和0Y是极限。

Stefan BMR 发表于 2022-7-5 23:51:46

你好,Marek
 
我前一段时间试图解决这个问题,但我无法使用lisp找到精确的数学解,而只是一个(好的)近似值。
如果你感兴趣的话,我会发布它,尽管它的排列略有不同:从已知点H开始的线垂直于线段AB的中点。
 
无论如何,您可以使用约束或动态块来实现相同的结果。
 
括号。图纸

mdbdesign 发表于 2022-7-6 00:01:55

Stefan,任何解决这个问题的方法都是非常必要的。请把它寄出去。
我确实尝试过约束。只是想知道AutoCAD函数“grread”可以让对象沿直线滑动(?)把它和约束结合起来可能会奏效,这对我来说仍然很神奇。

GP_ 发表于 2022-7-6 00:11:18

我的尝试(x和y正)。
 
(defun c:test ( / p ab p1 p2 d )
   (setq p (getpoint "Pick a point "))
   (setq ab (getdist "\nLength Line"))
   (if (< ab (cadr p))
       (progn
         (setq p1 (list 0.0 ab))
         (setq d ab)
         (while (not (equal (cadr p2) 0.0 1e-12))
               (setq p2 (polar p1 (- (angle p1 p) (* pi 0.5)) ab))
               (if (> (car p2) 0.0)
                   (cond
                     ( (< (cadr p2) 0.0) (setq p1 (polar p1 (* pi 0.5) (setq d (* d 0.5)))) )
                     ( (> (cadr p2) 0.0) (setq p1 (polar p1 (* pi 1.5) (setq d (* d 0.5)))) )
                   )
               )
         )
         (setq p1 (list 0.0 (cadr p1)))
         (setq p2 (list (car p2) 0.0))
         (entmake (list '(0 . "LINE") (cons 10 p1) (cons 11 p2)))
         (grdraw p p1 1 1)
         (princ (strcat "\nDistance = " (rtos (distance p p1))))
       )
       (alert (strcat "Out of range" "\nLength max = " (rtos (cadr p))))
   )
   (princ)
)
 
 

mdbdesign 发表于 2022-7-6 00:28:59

令人惊叹的非常感谢。
我们快到了。
那个么实际上选择x和y呢,因为它总是远离标准的0,0坐标,并且去掉了拾取第一个点的位置限制?
类似于:
拾取点:
拾取x线:(水平)
拾取y线:(垂直)
输入线条长度:

mdbdesign 发表于 2022-7-6 00:46:00

经过几次化妆操作(移动、旋转、与0,0对齐)后,我实现了我所需要的。
情人节的大吻。非常感谢。
页: [1]
查看完整版本: 线路定位在限制范围内