ysq101 发表于 2014-12-14 13:07:55

程序卡壳了。。求思路。。高手指点一二

本帖最后由 ysq101 于 2014-12-14 13:11 编辑

首先说明一下我要实现的目点和操作过程

下图需要用手工(command arc)来绘制点1 点3和点5的三点圆弧
但我的水平只能求出   点2点3点4的3个点表

有什么函数可以得出点1和点5??(断开距离不定   一般在0.1MM以内   为了提高操作速度,程序只点选了绿色那段椭圆弧   不对直线作任何操作)



试过(OSNAP 点2“_end”)在点2处捕捉点1不成功
求高手指点一下

434939575 发表于 2014-12-14 15:46:37

炸开弄行不?我是菜鸟。

wzg356 发表于 2014-12-14 16:03:48

(polar 点 角度 距离)
(setq p1 (polar p2 (* -1 pi) 距离))
(setq p5 (polar p4 (* 0.5 pi) 距离))
(* 0 pi)==0,往正东
(* 0.5 pi)往正北
(* -1 pi)往正西
(* -0.5 pi)往正南

ysq101 发表于 2014-12-14 19:36:14

wzg356 发表于 2014-12-14 16:03 static/image/common/back.gif
(polar 点 角度 距离)
(setq p1 (polar p2 (* -1 pi) 距离))
(setq p5 (polar p4 (* 0.5 pi) 距离))


用硬算的方法一定不行的。。毕竟那个“R”是椭圆弧。。
再说,断开的距离也不定

ysq101 发表于 2014-12-14 19:36:47

434939575 发表于 2014-12-14 15:46 static/image/common/back.gif
炸开弄行不?我是菜鸟。

椭圆弧或样条线怎么炸??

ZZXXQQ 发表于 2014-12-14 20:59:40

;拐角画样条线 明经 ZZXXQQ 2014.12.14
(defun c:tt ()
(setvar "CMDECHO" 0)
(while (and (setq s1 (entsel "\n选择直线1: "))
            (setq ent1 (entget(car s1)))
            (= (cdr(assoc 0 ent1)) "LINE")
            (setq s2 (entsel "\n选择直线2: "))
            (setq ent2 (entget(car s2)))
            (= (cdr(assoc 0 ent2)) "LINE"))
(setq p1 (cdr(assoc 10 ent1)))
(setq p2 (cdr(assoc 11 ent1)))
(setq p3 (cdr(assoc 10 ent2)))
(setq p4 (cdr(assoc 11 ent2)))
(if (and(not(inters p1 p2 p3 p4 T)) (inters p1 p2 p3 p4 nil)) (progn ;仅有虚交点
    (setq p5 (inters p1 p2 p3 p4 nil))
    (setq pt1 (if (< (distance p5 p1) (distance p5 p2)) p1 p2))
    (setq pt2 (if (< (distance p5 p3) (distance p5 p4)) p3 p4))
    (setq pt3 (polar pt1 (angle pt1 p5) 0.1))
    (setq pt4 (polar pt2 (angle pt2 p5) 0.1))
    (command "_.SPLINE" pt3 pt4 "" pt1 pt2)
))
)
(setvar "CMDECHO" 1)
(princ)
)

llsheng_73 发表于 2014-12-14 22:25:40

本帖最后由 llsheng_73 于 2014-12-14 22:42 编辑

能否考虑对选择的椭圆弧得到它的左下和右上角点(或者直接取该曲线的起止点)适当放大后组成SSGET“CP”的范围来选中那两条直线?进而确切知道那两点的坐标

ysq101 发表于 2014-12-17 19:35:18

llsheng_73 发表于 2014-12-14 22:25 static/image/common/back.gif
能否考虑对选择的椭圆弧得到它的左下和右上角点(或者直接取该曲线的起止点)适当放大后组成SSGET“CP”的范 ...

这个方法确实可以。。。。谢谢大师指点。。
其实我最后还是用了osnap来捕捉END点
因为测试时将视图方大了。。所以OSNAP返回NIL
同理。。按你的方法还是因为有视图大小的限制

ysq101 发表于 2014-12-17 19:37:37

ZZXXQQ 发表于 2014-12-14 20:59 static/image/common/back.gif


还是谢谢大师指点。。。可能你还没明白的意思。。
我的意思是想将样条线最终转为ARC
我卡在不能精确得到两条LINE的END点

ysq101 发表于 2014-12-17 19:41:21

llsheng_73 发表于 2014-12-14 22:25 static/image/common/back.gif
能否考虑对选择的椭圆弧得到它的左下和右上角点(或者直接取该曲线的起止点)适当放大后组成SSGET“CP”的范 ...

还的方法还需要很多IF来IF 直线的起点或终点(来最终得到离样条线的最近的点)
这样说对吗??
页: [1] 2 3
查看完整版本: 程序卡壳了。。求思路。。高手指点一二