明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3072|回复: 6

[求助]如何把兩條SPLINE焊接成一條SPLINE

[复制链接]
发表于 2003-11-25 17:29:00 | 显示全部楼层 |阅读模式
我寫了個程序是處理這個問題的. 但不成功, 希望各位大俠可以做的成功. 謝謝  ! ! !


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2003-11-26 08:29:00 | 显示全部楼层
BDYCAD您好:
看了您的图有点不明白,是不能连接为一条(白线),还是连接后形状变化(绿线)?
 楼主| 发表于 2003-11-26 08:53:00 | 显示全部楼层
To LIHUISHUAN
    您好! 我的程序目前執行把這兩條spline焊接在綠色的那條了.原因是10的組碼在(曲線控制點)並不在曲線上. 所以使綠色那條是錯誤的. 是我的程序不好造成的. 理想的效果應是只把這兩條曲線原封不動地焊接成一條的呀. 我總找不到正確的做法. 還請你多多指教呀.
发表于 2003-11-26 09:36:00 | 显示全部楼层
两条曲线的连接处会有问题,你的两个曲线不相连,过度之后会产生变化,即使相连的,两个端点的曲率不同,所以也会有偏差

  1. (defun c:test (;|ent1 ent2 |;/ ents1 ents2 lst1 lst2 knot-list controlpoint-list fit-list dxf70
  2.                dxf71 dxf72 dxf73 dxf74)
  3.   (setq ent1 (car (entsel)))
  4.   (setq ent2 (car (entsel)))
  5.   (setq ents1 (entget ent1))
  6.   (setq ents2 (entget ent2))
  7.   (setq knot-list nil)
  8.   (setq lst1 ents1 lst2 ents2)
  9.   ;Get all knot point
  10.   (while (setq lst1 (member (assoc 40 lst1) lst1))
  11.     (setq knot-list (append knot-list (list (car lst1))))
  12.     (setq lst1 (cdr lst1))
  13.   )
  14.   (while (setq lst2 (member (assoc 40 lst2) lst2))
  15.     (setq knot-list (append knot-list (list (car lst2))))
  16.     (setq lst2 (cdr lst2))
  17.   )
  18.   (setq lst1 ents1 lst2 ents2)

  19.   (while (setq lst1 (member (assoc 10 lst1) lst1))
  20.     (setq controlpoint-list (append controlpoint-list (list (car lst1))))
  21.     (setq lst1 (cdr lst1))
  22.   )
  23.   (while (setq lst2 (member (assoc 10 lst2) lst2))
  24.     (setq controlpoint-list (append controlpoint-list (list (car lst2))))
  25.     (setq lst2 (cdr lst2))
  26.   )

  27.   (setq lst1 ents1 lst2 ents2)
  28.   
  29.   (while (setq lst1 (member (assoc 11 lst1) lst1))
  30.     (setq fit-list (append fit-list (list (car lst1))))
  31.     (setq lst1 (cdr lst1))
  32.   )
  33.   (while (setq lst2 (member (assoc 11 lst2) lst2))
  34.     (setq fit-list (append fit-list (list (car lst2))))
  35.     (setq lst2 (cdr lst2))
  36.   )

  37.   (setq dxf70 (cons 70 8))
  38.   (setq dxf71 (cons 71 (+ (cdr (assoc 71 ents1)) (cdr (assoc 71 ents2)))))
  39.   (setq dxf72 (cons 72 (+ (cdr (assoc 72 ents1)) (cdr (assoc 72 ents2)))))
  40.   (setq dxf73 (cons 73 (+ (cdr (assoc 73 ents1)) (cdr (assoc 73 ents2)))))
  41.   (setq dxf74 (cons 74 (+ (cdr (assoc 74 ents1)) (cdr (assoc 74 ents2)))))
  42.   
  43.   (entmake (append
  44.              (list '(0 . "SPLINE"))
  45.              (list (cons 100 "AcDbEntity"))
  46.              (list (cons 100 "AcDbSpline"))
  47.              (list dxf70)
  48.              (list dxf71)
  49.              (list dxf72)
  50.              (list dxf73)
  51.              (list dxf74)
  52.              knot-list
  53.              controlpoint-list
  54.              fit-list
  55.            )
  56.   )
  57. )
发表于 2003-11-26 10:14:00 | 显示全部楼层
to bdycad:
您好!您讲的合成一条比较难办,我只能给您提供一条可能的思路:
按照样条曲线的数学定义,即控制点与曲线的函数关系入手。通过两曲线已知的控制点坐标,
用数学方法拟合成一条,这个方法非常笨拙,如有更好的思路最好不用这个方法!
关于样条曲线的定义,相关书籍上都有介绍。
 楼主| 发表于 2003-11-29 14:32:00 | 显示全部楼层
謝謝 Meflying大俠和 Lihuishuan大俠的熱情幫助, 
      目前Meflying的程序存在點問題, 我經過這三天的測試和更改,以經改好了.再在點出來供大家參考.我試過很好用.但如這個圖的曲線就不能用了,還得要meflying兄給我指正這個程序, 謝謝! ! !


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2003-12-1 15:41:00 | 显示全部楼层
不知為什麼當要焊接的曲線被打斷後DXF組碼就缺少了11的組碼? 使這個程序運行失敗, 還請各位大俠指點指點呀. 謝謝了.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-27 08:49 , Processed in 0.161568 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表