乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 163|回复: 9

一个关于3d线的问题请大家解决

[复制链接]

15

主题

114

帖子

6

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2004-1-9 12:51:00 | 显示全部楼层 |阅读模式
谢谢大家

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 2004-1-9 14:23:00 | 显示全部楼层
有几个问题:
1、是距离黄线,还是与黄线的交点,直线距离还是沿红色线的距离。
2、交点是否用红线与黄线相交来获得比较好?
回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 2004-1-9 14:51:00 | 显示全部楼层
(defun setcolor(sname color / sinf)
  (setq sinf (entget sname))
  (if (assoc 62 sinf)
    (setq sinf (subst (cons 62 color) (assoc 62 sinf) sinf))
    (setq sinf (append sinf (list (cons 62 color))))
  )
  (entmod sinf)
)
(defun c:Brk( / pt1 pt2 pt param1 param2 param ent entv ent2 ent2v)
  (setq pt1 (getpoint "\n选择交点一:"))
  (setq pt2 (getpoint "\n选择交点二:"))
  (prompt "\n选择红线...")
  (setq ent (car (entsel)))
  (setq entv (vlax-ename->vla-object ent))
  (setq param1 (vlax-curve-getParamAtPoint entv pt1))
  (setq param2 (vlax-curve-getParamAtPoint entv pt2))
  (if (vla-object ent2))
  (command "_.break" (list ent2 pt2) "f" pt2 "@")
  (setcolor (entlast) 4)
  (princ)
)
回复

使用道具 举报

15

主题

114

帖子

6

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2004-1-9 14:58:00 | 显示全部楼层
1、是距离黄线,还是与黄线的交点,直线距离还是沿红色线的距离。
答是:黄线的交点是沿红色线的距离为0.5
2、交点是否用红线与黄线相交来获得比较好?
就是红线与黄线的交点
飞哥刚才我那您的程序试了一下有执行错的时候
黄线两边的线上点的距离都应该为0.5
也就是说不管这0.5中有多少个点方向如何只要是距我们选的交点都距离0.5就好了
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:kxaugyggmhn.dwg 
下载次数:0  文件大小:24.94 KB  售价:2银币 [记录]
下载权限: 不限 以上或 Vip会员   [开通Vip]   [签到领银币]  [免费赚银币]


这种情况用您的程序就不好是了
回复

使用道具 举报

15

主题

114

帖子

6

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2004-1-9 15:17:00 | 显示全部楼层
飞哥和龙大侠都出手了
惊动的人不少呀
谢谢了
回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 2004-1-9 15:42:00 | 显示全部楼层
其实并不是出什么错了,就是捕捉交点的问题。由于离得太近,而捕捉功能又是打开的,所以就这样了。。。
  1. (vl-load-com)
  2. (defun err(msg)
  3.   (princ msg)
  4.   (setq *error* errtmp)
  5.   (setvar "osmode" os)
  6.   (princ)
  7. )
  8. (defun setcolor(sname color / sinf)
  9.   (setq sinf (entget sname))
  10.   (if (assoc 62 sinf)
  11.     (setq sinf (subst (cons 62 color) (assoc 62 sinf) sinf))
  12.     (setq sinf (append sinf (list (cons 62 color))))
  13.   )
  14.   (entmod sinf)
  15. )
  16. ;函数:GetInterPOint
  17. ;功能:返回两个对象的所有交点
  18. ;参数:        ent1、ent2        均为ename对象
  19. (defun GetInterPoint (ent1 ent2 / ax_ent_1 ax_ent_2 intpoints points i)
  20.   (setq ax_ent_1 (vlax-ename->vla-object ent1)
  21.         ax_ent_2 (vlax-ename->vla-object ent2)
  22.   )
  23.   (setq intpoints (vla-intersectwith ax_ent_1 ax_ent_2 acextendnone))
  24.   (setq intpoints (vlax-variant-value intpoints))
  25.   (setq i 0)
  26.   (if (> (vlax-safearray-get-u-bound intpoints 1) 0)
  27.     (repeat (/ (+ 1
  28.               (- (vlax-safearray-get-u-bound intpoints 1)
  29.                  (vlax-safearray-get-l-bound intpoints 1)
  30.               )
  31.            )
  32.            3
  33.         )
  34.       (setq points (append points (list (list
  35.                       (vlax-safearray-get-element intpoints i)
  36.                       (vlax-safearray-get-element intpoints (+ i 1))
  37.                       (vlax-safearray-get-element intpoints (+ i 2))
  38.                     )))
  39.       )
  40.       (setq i (+ 3 i))
  41.     )
  42.   )
  43.   points
  44. )
  45. (defun c:Brk( / pt1 pt2 pt param1 param2 param ent entv ent2 ent2v)
  46.   ;(setq pt1 (getpoint "\n选择交点一:"))
  47.   ;(setq pt2 (getpoint "\n选择交点二:"))
  48.   (setq errtmp *error*)
  49.   (setq *error* err)
  50.   (setq os (getvar "osmode"))
  51.   (setvar "osmode" 0)
  52.   (setvar "cmdecho" 0)
  53.   (prompt "\n选择线...");这里就是选择两条线,怎么提示我也不清楚,你自己改吧.  
  54.   (setq ss (ssget '((0 . "polyline"))))  
  55.   (prompt "\n选择红线...")
  56.   (setq ent (car (entsel)))
  57.   (setq pt1 (car (getinterpoint (ssname ss 0) ent)))
  58.   (setq pt2 (car (getinterpoint (ssname ss 1) ent)))
  59.   (setq entv (vlax-ename->vla-object ent))
  60.   (setq param1 (vlax-curve-getParamAtPoint entv pt1))
  61.   (setq param2 (vlax-curve-getParamAtPoint entv pt2))
  62.   (if (vla-object ent2))
  63.   (command "_.break" (list ent2 pt2) "f" pt2 "@")
  64.   (setcolor (entlast) 4)
  65.   (setq *error* errtmp)
  66.   (setvar "osmode" os)
  67.   (princ)
  68. )
回复

使用道具 举报

15

主题

114

帖子

6

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2004-1-9 16:18:00 | 显示全部楼层
哦原来如此
麻烦您了
举出这么多的例子
太感谢了
回复

使用道具 举报

15

主题

114

帖子

6

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2004-1-9 17:11:00 | 显示全部楼层
飞哥第3楼
的程序有一点bug有的时候运行返回nil
回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 2004-1-9 17:29:00 | 显示全部楼层
不可能,除非是出错了,而以前你覆盖了出错函数。。。。
为什么不用7楼的?就是3楼改进版,稍微完善些。唯一不同就是选择方交点的方法不同,你可以自己改过。
7楼的选择是先选两条线,然后选那条红线。注意,先的两条线选中后回车表示确认,而红线的选择就是单击
回复

使用道具 举报

15

主题

114

帖子

6

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2004-1-9 17:41:00 | 显示全部楼层
嘿嘿
因为我喜欢3楼的那个很有特点
我们现在在试生产特别忙天天都不在自己的位子坐
您用这个dwg试一下我用了这个就不好使了
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:xssavhmrbot.dwg 
下载次数:0  文件大小:25.09 KB  售价:2银币 [记录]
下载权限: 不限 以上或 Vip会员   [开通Vip]   [签到领银币]  [免费赚银币]

回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-8 04:53 , Processed in 0.796479 second(s), 90 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表