找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1126|回复: 9

[求助] [求助]:[0125]自动完成此图形呢?

[复制链接]
发表于 2006-1-25 09:40:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
[求助]:[0125]自动完成此图形呢?
请问该怎样自动完成如图上编号顺序的所形成的图形呢?

烦请各位可以解答一下

或是有其他的方法也烦请提供一下

谢谢~
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 11309个

财富等级: 富甲天下

发表于 2006-1-25 11:12:05 | 显示全部楼层
编程思路:
1、输入两圆直径;
2、选取两直线;
3、求两直线交点;(若无交点程序结束)
4、求交点到直线另一点的角度方向;
5、计算要生成直线的点;
6、修改原直线相应端点;
7、重生实体。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-1-25 12:07:28 | 显示全部楼层
以下是小弟参考写的
但还是有问题
烦请各位看看

另外关于  (setq coord (vlax-invoke el1vla 'IntersectWith el2vla 1))   这段有人可以解释一下吗?

(defun c:clc ()
(SETVAR "FILLETRAD" 0)
(setq el1 (entsel "\n 选取线段:"))
(setq el2 (entsel "\n 选取线段:"))
(command "_.FILLET" el1 el2)
  (setq el1vla (vlax-ename->vla-object el1))
  (setq el2vla (vlax-ename->vla-object el2))
  (setq coord (vlax-invoke el1vla 'IntersectWith el2vla 1))
  (setq rad 10)
  (command "_circle" coord rad "")

  (setq el3 (entlast))
  (command "_offset" rad el3 p1 "")
  (setq el4 (entlast))
  (setq ang (angle p1 p2))
  (setq p5 (polar p1 ang 5))
  (setq ss (ssget p5))
  (setq en (ssname ss 0))
  (setq sse (entget en))
  (setq ep_el1 (cdr (assoc 11 sse)))
  (setq om (getvar "osmode"))
  (setvar "osmode" 1)
  (command"_trim" el1 el2 el3 el4 "" p1 ep_el1 p3 p4 "")
  (command "_erase" el3 el4 "")
  (setvar "osmode" om)
  (princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-1-25 15:55:33 | 显示全部楼层
另外一种方法,感觉有点烦,不知道怎样简化一下
[php]
(defun c:test ()
  (setq obj1 (vlax-ename->vla-object (car (entsel "\n选择线段1:"))))
  (setq obj2 (vlax-ename->vla-object (car (entsel "\n选择线段2:"))))
  (setq        startpoint1 (vla-get-startpoint obj1)
        p1            (vlax-safearray->list (vlax-variant-value startpoint1))
        endpoint1   (vla-get-endpoint obj1)
        p2            (vlax-safearray->list (vlax-variant-value endpoint1))
        startpoint2 (vla-get-startpoint obj2)
        p3            (vlax-safearray->list (vlax-variant-value startpoint2))
        endpoint2   (vla-get-endpoint obj2)
        p4            (vlax-safearray->list (vlax-variant-value endpoint2))
  )
  (setq        coord (vla-IntersectWith obj1 obj2 acExtendBoth)
        p0    (vlax-safearray->list (vlax-variant-value coord))
  )
  (vla-put-startpoint obj1 coord)
  (vla-put-startpoint obj2 coord)
  (if (> (distance p0 p1) (distance p0 p2))
    (vla-put-endpoint obj1 startpoint1)
  )
  (if (> (distance p0 p3) (distance p0 p4))
    (vla-put-endpoint obj2 startpoint2)
  )
  (setq rad 10)
  (setq        point1 (vlax-3D-point (vlax-curve-getPointAtDist obj1 rad))
        point2 (vlax-3D-point (vlax-curve-getPointAtDist obj1 (* rad 2.0)))
        point3 (vlax-3D-point (vlax-curve-getPointAtDist obj2  rad))
        point4 (vlax-3D-point (vlax-curve-getPointAtDist obj2 (* rad 2.0)))
  )
  (vla-put-startpoint obj1 point1)
  (vla-put-endpoint obj1 point2)
  (vla-put-startpoint obj2 point3)
  (vla-put-endpoint obj2 point4)
)[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-1-25 16:00:48 | 显示全部楼层
请教您 (vlax-invoke el1vla 'IntersectWith el2vla 1) 这段函数的意思
该怎样解释呢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-1-25 16:07:30 | 显示全部楼层
最初由 tctabc 发布
[B]请教您 (vlax-invoke el1vla 'IntersectWith el2vla 1) 这段函数的意思
该怎样解释呢 [/B]


求两物体的交点坐标
语法
       (vlax-invoke-method obj method arg [arg...])
功能
       调用指定的 ActiveX 方法。
说明
1)red该函数在 AutoCAD 2000 之前的版本中为 vlax-invoke。[/COLOR]
2)参数 obj 为VLA 对象。
3)参数 method 为符号或字符串,指定要调用的方法。
4)参数 arg 为要传递给方法的参数。这里不执行参数类型检测。
返回值:
取决于调用的方法。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 11309个

财富等级: 富甲天下

发表于 2006-1-25 16:41:05 | 显示全部楼层
[php]
(DEFUN C:TR2L ()
(SETVAR "CMDECHO" 0)
(SETQ OLDOS (GETVAR "OSMODE"))
(SETVAR "OSMODE" 0)
(SETQ RS (GETDIST "\nEnter small r= :")
       RD (GETDIST "\nEnter larger R= :")
       S1 (CAR (ENTSEL "\nSelect first line :"))
       S2 (CAR (ENTSEL "\nSelect last line :")))
(IF (AND RS RD S1 S2) (PROGN
  (SETQ ENT1 (ENTGET S1) ENT2 (ENTGET S2)
        L1 (CDR (ASSOC 0 ENT1)) L2 (CDR (ASSOC 0 ENT2)))
  (IF (= L1 L2 "LINE") (PROGN
   (SETQ P1 (CDR (ASSOC 10 ENT1)) P2 (CDR (ASSOC 11 ENT1))
         P3 (CDR (ASSOC 10 ENT2)) P4 (CDR (ASSOC 11 ENT2))
         P5 (INTERS P1 P2 P3 P4 nil))
   (IF P5 (PROGN
    (IF (> (DISTANCE P5 P1) (DISTANCE P5 P2))
     (SETQ PT1 "P2" PT2 "P1")
     (SETQ PT1 "P1" PT2 "P2")
    )
    (IF (> (DISTANCE P5 P3) (DISTANCE P5 P4))
     (SETQ PT3 "P4" PT4 "P3")
     (SETQ PT3 "P3" PT4 "P4")
    )
    (SETQ AN1 (ANGLE P5 (EVAL (READ PT2)))
          AN2 (ANGLE P5 (EVAL (READ PT4)))
          PT11 (POLAR P5 AN1 RS)  PT12 (POLAR P5 AN1 RD)
          PT13 (POLAR P5 AN2 RS)  PT14 (POLAR P5 AN2 RD)
          ENT1 (SUBST (CONS 10 PT11) (ASSOC 10 ENT1) ENT1)
          ENT1 (SUBST (CONS 11 PT12) (ASSOC 11 ENT1) ENT1)
          ENT2 (SUBST (CONS 10 PT13) (ASSOC 10 ENT2) ENT2)
          ENT2 (SUBST (CONS 11 PT14) (ASSOC 11 ENT2) ENT2))
    (ENTMOD ENT1)
    (ENTMOD ENT2)
   )
    (PRINC "\nCon't Find the intersection. ")
   )
  ))
))
(SETVAR "OSMODE" OLDOS)
(SETVAR "CMDECHO" 1)
(PRINC)
)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-1-25 17:06:51 | 显示全部楼层
ljpnb 您的程序是否可以将偏移的距离在改写一下呢?
因为偏移的距离可能会不相同.

(setq rad 10)

(setq point1 (vlax-3D-point (vlax-curve-getPointAtDist obj1 rad))
      point2 (vlax-3D-point (vlax-curve-getPointAtDist obj1 (* rad 2.0)))
      point3 (vlax-3D-point (vlax-curve-getPointAtDist obj2  rad))
      point4 (vlax-3D-point (vlax-curve-getPointAtDist obj2 (* rad 2.0)))
)
  (vla-put-startpoint obj1 point1)
  (vla-put-endpoint obj1 point2)
  (vla-put-startpoint obj2 point3)
  (vla-put-endpoint obj2 point4)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-1-25 19:45:05 | 显示全部楼层
TO 8楼,这个RAD可以当然可以改成7楼这样的,只不过1楼的原程序是这么定,所以我就不改了,不过我感觉我这个程序写得太烦了,可以简化一下会更简单一些。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-1-25 22:07:34 | 显示全部楼层
不知 ljpnb 楼主 会将程序又简化多少? 真是高手阿~
另外请问关于您使用的函数问题
vla-IntersectWith 这函数是求两物体的交点坐标?
请问跟这有和不同 (vlax-invoke-method obj method arg [arg...])
这支函数中的 "method" 及 "arg" 所可以带入值,该在哪可以找到介绍呢?

另外 (vla-IntersectWith obj1 obj2 acExtendBoth)
所使用的 acExtendBoth 此函数是否可以介绍一下呢

以上问题烦请解答一下
谢谢~
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-29 07:07 , Processed in 0.316280 second(s), 51 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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