明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖

急急急。。。在线等答案

  [复制链接]
 楼主| 发表于 2011-9-8 22:46:28 | 显示全部楼层
本帖最后由 剪刀石头布遛了 于 2011-9-8 22:49 编辑
mandala 发表于 2011-9-8 22:41
不过有意思的是,这个程序的过程是这样:由一点,往X方向画一条长500的线,再往Y方向画一条长800的线,然后 ...


呵呵,是这个意思,我边学边写程序,故写了上段程序做个测试,非常感谢,大晚上的。
分析了下原因:(setq en2_data (entget (car en2)))     (setq en2_data (entget line2)),可能我对直线的属性并未理解好。
发表于 2011-9-8 22:52:11 | 显示全部楼层
本帖最后由 mandala 于 2011-9-8 22:55 编辑

(entlast)象你这么用是可以的,但一般把这句话写入linej这个子函数里,如command之后加上(setq a (entlast)),这样主程序里直接写(setq b31 (plinej b2 500 0))就可以了。

另一个子函数这么写会更简单明了。对于曲线相关的函数,vlax系列函数功能更强大!所以我建议对这个系列的函数应该多了解一下。

(defun jiaodian(line1 line2)
                (setq line1 (vlax-ename->vla-object line1))
                (setq line2 (vlax-ename->vla-object line2))
                (setq ctpnt2 (inters
                                              (vlax-curve-getstartpoint line1)
                                              (vlax-curve-getendpoint line1)
                                              (vlax-curve-getstartpoint line2)
                                              (vlax-curve-getendpoint line2)
                                     nil)
                  )
                  (setq x (car ctpnt2))
                  (setq y (cadr ctpnt2))
                (princ (strcat "\n这两条线段交点为:X=" (rtos x) " Y=" (rtos y) "!"))
)

 楼主| 发表于 2011-9-8 23:43:06 | 显示全部楼层
mandala 发表于 2011-9-8 22:52
(entlast)象你这么用是可以的,但一般把这句话写入linej这个子函数里,如command之后加上(setq a (entlas ...

恩,受益匪浅
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-6-9 19:49 , Processed in 0.152278 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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