邹锋 发表于 2013-1-14 20:44:15

懂曲线的高手来看看,我又遇到 麻烦了

本帖最后由 邹锋 于 2013-1-14 21:13 编辑





;BY ZZXXQQ
(defun c:ttT()
(vl-load-com)
(if (and (setq s1 (entsel "\nselect a polyline ????? :"))
    (setq ent (entget (car s1)))
    (= (cdr (assoc 1 ent)) "LWPOLYLINE")
    (= (cdr (assoc 70 ent)) 1)
      )
    (progn
      (setq objen (car s1))
      (setq plst (list))
      (foreach n ent
(if (= (car n) 10)
   (setq plst (cons (cdr n) plst))
)
      )
      (setq plst (reverse plst));;;;;;;
      (setq ss (ssget "wp" plst '((0 . "CIRCLE"))))
    )
)
(if ss (sslength ss)0);取得封闭多义线内的一个圆
(setq na (ssname ss 0))
(setq obj (vlax-ename->vla-object objen))
(setq pt1 (cdr(assoc 10 (entget na))));取得圆心
(setq pt2 (vlax-curve-getClosestPointTo obj pt1));返回点到曲线最近的点
(addpt obj pt2);在多义线上添加刚刚搜索到的点
;写到这里,以下调试失败,不明白是哪出问题了,老是转出来的图变了

;(这里将这条封闭的多线段转成首尾相连的不封闭的线;
(setq pte (getendpt obj 0.0001));返回在距离曲线结束点为0.0001的地方的点
(addpt obj pte);再添加一个点然后将其做成不封闭的,失败了
(setq pte (getendpt obj 0.5));返回在距离曲线结束点为0.5的地方的点
(addpt obj pte);在多义线上添加点也失败了,不知为何了,要么多义线变样了
(princ)
)





;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;返回曲线距离终点为多久的一个点
(DEFUN getendpt(obj dist / len endpt)
(setq len (vlax-curve-getdistatparam obj (vlax-curve-getendparam obj)))
(setq endpt (vlax-curve-getPointAtDist obj (- len dist)))
)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;多线段添加点
;;;;;;;;;;;;BY CAO YIN
(defun addpt (Obj Pt / PP)
(setq PT (trans Pt 1 0)
      PP (vlax-curve-getclosestpointto OBJ PT))
(vlax-invoke
    OBJ
    'ADDVERTEX
    (1+ (fix (vlax-curve-getparamatpoint OBJ PP)))
    (list (car PT) (cadr PT))
)
)




看不明白吗?
我这程序想实现这样的目地
1选择封闭多义线
2求出多义线内的圆心
3算出圆心到多义线最近的点,并在这条多义线添加这个点
4将这条多义线变成首尾相连而不封闭的多义线(就是起始与结束点重合)
5算出距离这条多线段结束点为0.5的的点而且这个点在曲线上,最后 在这条多线段上面添加这个点


阿霸jun 发表于 2013-1-14 21:17:25

还是没搞懂,这个的目的是干啥,有啥用处?

邹锋 发表于 2013-1-14 21:32:13

阿霸jun 发表于 2013-1-14 21:17 static/image/common/back.gif
还是没搞懂,这个的目的是干啥,有啥用处?

这只是我写的软件中其中的一点点开始,在这只是做图用

zyhandw 发表于 2013-1-17 14:39:05

找到原因了,看来楼主还是不够细心啊,犯了个低级错误
(= (cdr (assoc 1 ent)) "LWPOLYLINE")=>
(= (cdr (assoc 0 ent)) "LWPOLYLINE")
改后,用你的测试图,检验通过!
页: [1]
查看完整版本: 懂曲线的高手来看看,我又遇到 麻烦了