乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 32|回复: 14

[编程交流] 测量vlax曲线getPointA

[复制链接]

18

主题

46

帖子

29

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
90
发表于 2022-7-6 08:15:00 | 显示全部楼层 |阅读模式
早上好
我想把一个“渐变”的曲线(样条线,样条线),见附图。我不知道该怎么做,也不知道是否有可能做到。“渐变”始终垂直于曲线。L1、L2、D-给定值。知道吗?测量Vlax曲线getPointAtDist?
测量图纸
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 08:22:44 | 显示全部楼层
关于编程方法,当然可以做到。沿着您已经提出的函数,您还需要寻找插入点上的二阶导数,以获得局部切线,从而获得曲线上的垂线。
 
当做
米尔恰
回复

使用道具 举报

18

主题

46

帖子

29

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
90
发表于 2022-7-6 08:26:47 | 显示全部楼层
对于二阶导数,使用哪个函数?
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 08:28:42 | 显示全部楼层
要在给定位置列出曲线上的二阶导数,应使用vlax curve getSecondDeriv。
 
我建议您查看帮助vlax curve-*函数系列。
 
当做
米尔恰
回复

使用道具 举报

0

主题

375

帖子

385

银币

限制会员

铜币
-7
发表于 2022-7-6 08:33:48 | 显示全部楼层
对不起,Mircea,我认为不需要第二个。这可能会有所帮助:
(setq tg(vlax curve getFirstDeriv entity param))将为您提供在param处与曲线相切的方向。因此,垂直方向为(atan(cadr-tg)(car-tg))+或-pi/2。
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 08:38:34 | 显示全部楼层
斯特凡,你完全正确;我被纠正了。很抱歉给您带来不便。
 
当做
米尔恰
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-6 08:44:04 | 显示全部楼层
这可能会让你开始,尽管我没有得到你特别想要的。
 
将此作为一个示例。
 
  1. (defun c:TesT (/ ss p2 l d n)
  2. ;;; Tharwat 21. Feb. 2012 ;;;
  3. (if (and
  4.        (setq ss (entsel "\n Select a Poly :"))
  5.        (member (cdr (assoc 0 (entget (car ss))))
  6.                '("LINE" "SPLINE" "LWPOLYLINE" "POLYLINE")
  7.        )
  8.        (setq p2 (1+ (fix (vlax-curve-getendparam (car ss)))))
  9.        (setq l (vlax-curve-getdistatparam (car ss) (- p2 1)))
  10.        (setq d (getdist "\n Specify the distance between points :"))
  11.        (setq n d)
  12.      )
  13.    (progn
  14.      (entmake
  15.        (list '(0 . "POINT")
  16.              (cons 10 (vlax-curve-getpointatparam (car ss) 0))
  17.        )
  18.      )
  19.      (repeat
  20.        (fix (/ l d))
  21.         (setq pt (vlax-curve-getpointatdist (car ss) d))
  22.         (entmake (list '(0 . "POINT") (cons 10 pt)))
  23.         (setq d (+ n d))
  24.      )
  25.    )
  26.    (princ)
  27. )
  28. (princ)
  29. )
回复

使用道具 举报

18

主题

46

帖子

29

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
90
发表于 2022-7-6 08:46:45 | 显示全部楼层
我想比较两个字符串,使用什么函数?
(=(cdr(assoc 0(entget(car(entsel)ЮЮ))“line”),我选择了一条线,但它不工作。。。我应该使用equal或eq。。。?
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-6 08:51:29 | 显示全部楼层
你应该这样使用它。。
 
在这种情况下,and=和eq函数是相同的。
或者这个。。。
  1. (= (cdr (assoc 0 (entget (car(entsel))))) [color=blue][b]"LINE"[/b][/color])

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

使用道具 举报

18

主题

46

帖子

29

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
90
发表于 2022-7-6 08:57:03 | 显示全部楼层
如何确定样条曲线的起点和终点?
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-9 09:00 , Processed in 0.348666 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表