明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: highflybir

[【高飞鸟】] 【飞鸟集】心随我动--为LISP定制的动态输入,拖拉和动态信息函数(更新至20130731)

    [复制链接]
发表于 2011-11-29 16:24:02 | 显示全部楼层
高山仰止,景行行止。虽不能至,然心向往之。
发表于 2011-11-30 09:47:20 | 显示全部楼层
昨天下载的最终生成日期是29日8点多,今天刚上传的最终生成日期是29日2点多,哪个是最新的?晕了
 楼主| 发表于 2011-11-30 11:34:38 | 显示全部楼层
liuyj 发表于 2011-11-30 09:47
昨天下载的最终生成日期是29日8点多,今天刚上传的最终生成日期是29日2点多,哪个是最新的?晕了

本来今天想上传一个最新的,但是后来测试发现有个问题,所以又把昨天的放回去了。
发表于 2011-11-30 13:48:27 | 显示全部楼层
其实qjchen的dynamic Array我经常使用,这两个的不同我比较了一下,原来的利用grread的,在光标移动或静止时阵列出来的实体都不晃眼,但改写的程序在光标移动时实体能看见,但很晃眼,光标静止时,就看不到东西了,昨天的最新版好些,但还是有些晃眼
发表于 2011-11-30 13:48:59 | 显示全部楼层
补充一点,我用cad2006
 楼主| 发表于 2011-11-30 13:55:29 | 显示全部楼层
本帖最后由 highflybir 于 2011-11-30 14:03 编辑
liuyj 发表于 2011-11-30 13:48
补充一点,我用cad2006

  可以这样:
  1.   
  2.   (HFB_POINTMONITOR "ArrayCallback")
  3.   (getpoint p0  "\nThe end point:")
  4.   (HFB_POINTMONITOR)   
  5.   ;;(SSJIG "ArrayCallback" "\nThe end point:" "" (+ 1 2 4 16 128) 3 (trans p0 1 0))




你可以不用ssJIG,而用 pointmonitor,就是把我注释部分去掉,再注释掉SSJIG那句,那样的话,就一点都不会闪。
Pointmonitor要比JIG好和快。在大多数情况下,可以用SSJIG的也可以用Pointmonitor,这两种方法都可以用。

 楼主| 发表于 2011-12-4 09:19:56 | 显示全部楼层
程序再次更新,修正了输入的问题,修正了几个可能引起异常的bug,对2007-2009 的64位版本重新编译。如果有朋友用这个版本的CAD,请告知我加载和测试情况。
增加了英文版本。
发表于 2011-12-4 10:09:09 来自手机 | 显示全部楼层
楼主能讲解一下钩子函数的用法么,谢谢

点评

你需要了解一点C++函数。知道什么是窗口句柄和消息类。这两个函数现在还不完善,以后会详细列出用法的。  发表于 2011-12-4 18:52
发表于 2011-12-5 16:53:49 | 显示全部楼层
谢谢飞鸟兄的函数

以前,出于对grread的无法捕捉和正交等原因,经常寻找改进这个的方法,所以,经常用一个画曲线上的垂直线的例子来练写代码。

以前利用Alexander Rivilis的DynDraw.Arx函数
http://www.theswamp.org/index.php?topic=9133.0
编写过这个函数
http://www.theswamp.org/index.php?topic=9133.msg395251#msg395251

而后,又采用了.Net的Jig函数来编写这个效果
http://bbs.mjtd.com/thread-84961-1-1.html

Highflybird兄的这个新的Arx出来之后,一直没有时间仔细学习,昨晚在认真学习并请教了高飞兄之后,写下如下代码,可以看出,相比Alexander的DynDraw函数,高飞兄的Arx编写思路更加清晰,代码可以更短。

在此向高飞兄表达崇高的敬意


  1. ;;; Thanks to Highflybird very much
  2. ;;; 寻找曲线上点的垂直线.
  3. ;;; 请先加载Highflybird兄的好函数
  4. ;;;
  5. (defun C:test (/ curve l)
  6.   (prompt "\n 请先选择一个曲线:")
  7.   (setq curve (vlax-ename->vla-object (car (entsel)))
  8.         l (vla-addline (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object)))
  9.              (vlax-3D-point '(0 0 0))(vlax-3D-point '(0 0 0)))
  10.   )
  11.   (ssjig "dyn_call_back" "\n 请选择一点: " "" (+ 1 2 128) 0)
  12.   (princ)
  13. )
  14. ;;;;画垂直线
  15. (defun dyn_call_back (p / p1 p2)
  16.   (setq p1 (vlax-curve-getClosestPointTo curve p)
  17.         p2 (polar p1 (+ (/ pi 2) (angle '(0 0 0)
  18.                      (vlax-curve-getFirstDeriv curve (vlax-curve-getParamAtPoint curve
  19.                         (vlax-curve-getClosestPointTo curve p))))) (* 0.3 (getvar "viewsize")))
  20.         p2a (mapcar '+ p1 (mapcar '- p1 p2)))
  21.   (if (< (distance p p2) (distance p p2a))
  22.     (progn (vlax-put l 'StartPoint p1) (vlax-put l 'EndPoint p2))
  23.     (progn (vlax-put l 'StartPoint p1) (vlax-put l 'EndPoint p2a))
  24.   )
  25. )
  26. (princ "\n By [email]qjchen@gmail.com[/email], 利用Highflybird兄的函数,过一点画垂直线,动态,命令test")
  27. (princ)




评分

参与人数 1明经币 +1 收起 理由
highflybir + 1 谢谢演示。

查看全部评分

发表于 2011-12-8 18:05:23 | 显示全部楼层


另外的一个例子。
递归画正六边形。

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2024-11-6 05:07 , Processed in 0.177760 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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