明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4131|回复: 7

AUTOLISP 捕捉焦点函数osnap 难点求助

[复制链接]
发表于 2012-5-27 09:11:16 | 显示全部楼层 |阅读模式
我在用到Autolisp osnap函数时,遇到了瓶颈区.
捕捉交点的图形是任意封闭图形 和他的旋转中心作射线的交点,有很多个,
捕捉焦点怎莫能一一捕捉到呢?还得不捕捉重复的, 我的目的是捕捉一个焦点画一个焦点.
请求群里高手帮助!

发表于 2012-5-27 15:54:59 | 显示全部楼层
配一张图直观地表述下吧。
发表于 2012-5-27 22:23:43 | 显示全部楼层
不是太明白楼主的意思。。
 楼主| 发表于 2012-5-29 08:55:55 | 显示全部楼层
本帖最后由 最后的さ回忆 于 2012-5-29 08:58 编辑
caddog 发表于 2012-5-27 15:54
配一张图直观地表述下吧。

我的图形是用样条曲线随机画得,但又有一定的约束范围.在旋转中心阵列,任意阵列出N条射线.射线与画的图形会有N个焦点,我想画出每个焦点.但是因为点之间的距离不定性,还有数目不定性,编程很不会!做出阵列的编程就卡住了?
(defun c:anglelin ()

  (graphscr)
  (setvar "blipmode" 0)
  (setq p0 '(900 200))
  (setq p1 '(1080 200))
  (command "line" p0 p1 "")
  (setq s1 (ssget "l"))
  (setq a1 (getint "\nEnter decima angle from deyboard:"))
  (setq n (/ 360 a1))
  (command "-array" s1 "" "p" p0  n 360 "y")
    (princ)

)

本帖子中包含更多资源

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

x
发表于 2012-5-29 09:20:09 | 显示全部楼层
射线的数量有吧!建立射线的选择集,用vla-intersectwith获得交点!
 楼主| 发表于 2012-5-31 07:46:06 | 显示全部楼层
zhang8755 发表于 2012-5-29 09:20
射线的数量有吧!建立射线的选择集,用vla-intersectwith获得交点!

(defun c:anglelin ()

  (graphscr)
  (setvar "blipmode" 0)
  (setq p0 '(900 200))
  (setq p1 '(1080 200))
  (command "line" p0 p1 "")
  (setq s1 (ssget "l"))
  (setq a1 (getint "\nEnter decima angle from deyboard:"))
  (setq n (/ 360 a1))
  (command "-array" s1 "" "p" p0  n 360 "y")
  (setq p2 (osnap p1 "int"))

  (command "point" p2)
  
  (vl-load-com )
  
  (setq ss (car (entsel)))
   
   (vlax-enam ->vla-object ss)
   (setq ee (car (entsel)))
   (vlax-ename->vla-object ee)

(vlax-invoke-method ss  'intersectwith  ee 3.0)
)
我用这段程序时它说我(vlax-invoke-method ss  'intersectwith  ee 3.0)
参数类型不对,我不知道哪里有问题,还请高人指导
 楼主| 发表于 2012-5-31 07:57:39 | 显示全部楼层
zhang8755 发表于 2012-5-29 09:20
射线的数量有吧!建立射线的选择集,用vla-intersectwith获得交点!

   
它说我 参数类型错误: VLA-OBJECT <图元名: 7efb4448>
发表于 2012-6-6 15:47:54 | 显示全部楼层
关于intersectwith的使用,我是这样写的:
;;求obj-lin与另一图元(多段线)的实交点
  (setq obj-lin (vlax-ename->vla-object obj-lin)
          obj2 (vlax-ename->vla-objec obj2))
;;图元要先转换成ACTIVEX对象并赋值,您在程序中的写法“(vlax-ename->vla-object ee)“是不对的
;;下在开始求交点
                    (setq ver-interse
                           (VLAX-VARIANT-VALUE
                             (VLA-INTERSECTWITH obj-lin obj2 2)
                           )
                    )
;;求出的交点为安全数组,要转换成表:
(VLAX-SAFEARRAY->LIST ver-interse)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-9-25 12:23 , Processed in 0.184965 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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