ollie 发表于 2022-7-6 10:40:37

Y沿弧U相交

大家好
 
我试图识别圆弧上的点,如果从圆弧上的测试点绘制一条水平线,结果将是Y坐标相交的一个或两个点的列表_
 
干杯

alanjt 发表于 2022-7-6 10:48:01

调查
(vlax-invoke obj1 'IntersectWith obj2 acExtendNone)

ollie 发表于 2022-7-6 10:56:57

谢谢alanjt。
 
不幸的是,我不能使用intersectsWith方法,因为没有实际的线,并且基于ODBX的程序执行计算,每个文档将插入数千次。我写了一个方法来生成关于弧的每个可以想象的细节(我能想象的每个人),并知道测试坐标。我需要只用数学来实现这一点。具有讽刺意味的是,我曾经在制造业和设计业做过短暂的工作,如果我在这里呆得足够长,我现在就必须学会如何做到这一点。
 
干杯
奥利

alanjt 发表于 2022-7-6 11:00:13

我喜欢人们不包括所有信息的时候。

ollie 发表于 2022-7-6 11:08:34

 
呵呵:这些天我花了很多时间用各种语言写数学函数,我想每个人都只会思考微积分。

alanjt 发表于 2022-7-6 11:14:57

当它有内置功能时就不会了。

ollie 发表于 2022-7-6 11:20:22

内置功能适用于弱者
 
上述声明可能是我所接受的每个项目的失败。

alanjt 发表于 2022-7-6 11:24:21

如果有选项,请使用它。

ollie 发表于 2022-7-6 11:34:24

根据函数的规模(如果它相当小),我倾向于在以下基础上工作-如果有vl*方法,请在不编写自己的函数的情况下使用。

Lee Mac 发表于 2022-7-6 11:34:52

内置功能适用于弱者
 

(defun GetArcX ( e y / dxf asin l c r s f a g )
;; © Lee Mac 2010

(defun dxf ( c l ) (cdr (assoc c l)))

(defun asin ( x )
   (if (< (abs x) 1.0)
   (if (equal (abs x) 1.0 1e-
       (* x (/ pi 2.))
       (atan (/ x (sqrt (- 1.0 (* x x)))))
   )
   )
)

(setq l (entget e))

(setq c (dxf 10 l) r (dxf 40 l) s (dxf 50 l) f (dxf 51 l))

(if (< f s) (setq s (- s (* 2 pi))))

(if (setq a (asin (/ (- y (cadr c)) r)))
   (mapcar
   (function
       (lambda ( n )
         (if (<= s n f)
         (list (+ (* r (cos n)) (car c)) y)
         )
       )
   )
   (list (- pi a) (rem (+ (* 2 pi) a) (* 2 pi)))
   )
)
)


(defun c:test ( / e pt x y )

(if (and (setq e (car (entsel "\nSelect Arc: ")))
          (setq p (getpoint "\nPick Y Elevation: "))
          (setq x (GetArcX e (cadr (trans p 1 0)))))

   (foreach pt x
   (if pt
       (entmakex (list (cons 0 "POINT") (cons 10 pt)))
   )
   )
)
)
页: [1] 2
查看完整版本: Y沿弧U相交