chpmould
发表于 2011-4-25 00:14:33
ZZXXQQ 发表于 2011-4-24 20:07 static/image/common/back.gif
5楼已改。再试试。
我测试了一下,还不是我需要的效果... ...
版主: 你按以下两点思路再帮考虑看看
1>不使用修剪的方法,因为修剪对旁边的实体有影响;
2>考虑一下,不论椭圆弧起始角在任何状态下,先计算出椭圆弧的两个端点,然后再用画圆弧代替(近似)
狂刀lxx
发表于 2011-4-25 03:37:57
本帖最后由 狂刀lxx 于 2011-4-25 03:38 编辑
;; el2pl= 椭圆转pl线(命令方法)--------ok!-----------lxx.2004.10
;; 功能: 椭圆转pl线。本命令仅仅转换完全的椭圆.
;; 参 sp2pl.
(defun c:el2pl (/ e en ope e10 e11 e40 e6 e8 e62)
(setq e (car(entsel))
en (entget e)
ope(getvar "pellipse"))
(setvar "pellipse" 1)
(mapcar '(lambda(x y)(set x (cdr(assoc y en)))) '(e10 e11 e40 e6 e8 e62)'(10 11 40 6 8 62))
(entdel e)
(vl-cmdf "ucs" "w" ".ellipse" "c" e10(setq e11 (mapcar '+ e10 e11)) (* e40 (distance e10 e11)) ".ucs" "_p")
;;>>>属性设置>>>>
(setvar "pellipse" ope)
(princ)
))
chpmould
发表于 2011-4-25 17:39:45
狂刀lxx 发表于 2011-4-25 03:37 static/image/common/back.gif
谢谢,思路可以借鉴... 如何计算出椭圆弧的两个端点和在线上的中点...
狂刀lxx
发表于 2011-4-27 16:03:03
查看vlax-函数
chpmould
发表于 2011-4-27 18:10:05
狂刀lxx 发表于 2011-4-27 16:03 static/image/common/back.gif
查看vlax-函数
vlax-函数很少用,你可以帮助写个例子计算出椭圆弧的两个端点和在线上的中点吗?
ZZXXQQ
发表于 2011-4-27 20:20:40
5楼程序中的PT3,PT4就是椭圆弧的两个端点
chpmould
发表于 2011-4-27 20:37:28
本帖最后由 chpmould 于 2011-4-27 20:49 编辑
ZZXXQQ 发表于 2011-4-27 20:20 http://bbs.mjtd.com/static/image/common/back.gif
5楼程序中的PT3,PT4就是椭圆弧的两个端点
版主,我测试过,程序是可以获取两个端点,但不知能否获取中点,如下图示...
ZZXXQQ
发表于 2011-4-27 21:21:49
如果PT3是椭圆弧上的一个端点,可以用下法取得椭圆弧的中间点:
(setq ptm (osnap pt3 "MID"))
chpmould
发表于 2011-4-27 21:40:16
ZZXXQQ 发表于 2011-4-27 21:21 static/image/common/back.gif
如果PT3是椭圆弧上的一个端点,可以用下法取得椭圆弧的中间点:
(setq ptm (osnap pt3 "MID"))
另请教一个问题,如何更换组码中兰色1.0为0.0(210 0.0 0.0 1.0)...
ZZXXQQ
发表于 2011-4-27 22:08:41
(defun c:tt ()
(if (setq ss (ssget "X" '((0 . "ELLIPSE") (210 0.0 0.0 -1.0)))) (progn
(setq i 0)
(repeat (sslength ss)
(setq en (ssname ss i)
ent (entget en)
ent (subst '(210 0.0 0.0 1.0) (assoc 210 ent) ent)
st (cdr(assoc 41 ent))
ed (cdr(assoc 42 ent))
ent (subst (cons 41 (- (+ pi pi) ed)) (assoc 41 ent) ent)
ent (subst (cons 42 (- (+ pi pi) st)) (assoc 42 ent) ent))
(entmod ent)
(setq i (1+ i))
)
))
(princ)
)