transcad 发表于 2022-7-6 08:15:00

测量vlax曲线getPointA

早上好
我想把一个“渐变”的曲线(样条线,样条线),见附图。我不知道该怎么做,也不知道是否有可能做到。“渐变”始终垂直于曲线。L1、L2、D-给定值。知道吗?测量Vlax曲线getPointAtDist?
测量图纸

MSasu 发表于 2022-7-6 08:22:44

关于编程方法,当然可以做到。沿着您已经提出的函数,您还需要寻找插入点上的二阶导数,以获得局部切线,从而获得曲线上的垂线。
 
当做
米尔恰

transcad 发表于 2022-7-6 08:26:47

对于二阶导数,使用哪个函数?

MSasu 发表于 2022-7-6 08:28:42

要在给定位置列出曲线上的二阶导数,应使用vlax curve getSecondDeriv。
 
我建议您查看帮助vlax curve-*函数系列。
 
当做
米尔恰

Stefan BMR 发表于 2022-7-6 08:33:48

对不起,Mircea,我认为不需要第二个。这可能会有所帮助:
(setq tg(vlax curve getFirstDeriv entity param))将为您提供在param处与曲线相切的方向。因此,垂直方向为(atan(cadr-tg)(car-tg))+或-pi/2。

MSasu 发表于 2022-7-6 08:38:34

斯特凡,你完全正确;我被纠正了。很抱歉给您带来不便。
 
当做
米尔恰

Tharwat 发表于 2022-7-6 08:44:04

这可能会让你开始,尽管我没有得到你特别想要的。
 
将此作为一个示例。
 

(defun c:TesT (/ ss p2 l d n)
;;; Tharwat 21. Feb. 2012 ;;;
(if (and
       (setq ss (entsel "\n Select a Poly :"))
       (member (cdr (assoc 0 (entget (car ss))))
               '("LINE" "SPLINE" "LWPOLYLINE" "POLYLINE")
       )
       (setq p2 (1+ (fix (vlax-curve-getendparam (car ss)))))
       (setq l (vlax-curve-getdistatparam (car ss) (- p2 1)))
       (setq d (getdist "\n Specify the distance between points :"))
       (setq n d)
   )
   (progn
   (entmake
       (list '(0 . "POINT")
             (cons 10 (vlax-curve-getpointatparam (car ss) 0))
       )
   )
   (repeat
       (fix (/ l d))
      (setq pt (vlax-curve-getpointatdist (car ss) d))
      (entmake (list '(0 . "POINT") (cons 10 pt)))
      (setq d (+ n d))
   )
   )
   (princ)
)
(princ)
)

transcad 发表于 2022-7-6 08:46:45

我想比较两个字符串,使用什么函数?
(=(cdr(assoc 0(entget(car(entsel)ЮЮ))“line”),我选择了一条线,但它不工作。。。我应该使用equal或eq。。。?

Tharwat 发表于 2022-7-6 08:51:29

你应该这样使用它。。
 
在这种情况下,and=和eq函数是相同的。
或者这个。。。

(= (cdr (assoc 0 (entget (car(entsel))))) "LINE")

但所有这些都不是一种好的编程方式。
 
因为如果你什么都不选,就会出错。

transcad 发表于 2022-7-6 08:57:03

如何确定样条曲线的起点和终点?
页: [1] 2
查看完整版本: 测量vlax曲线getPointA