明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: langjs

[函数] 修改了下grread捕捉子函数应该能用了

    [复制链接]
发表于 2018-7-14 16:13:28 | 显示全部楼层
langjs大师,请问如何让程序接受键盘输入啊?
发表于 2018-8-30 18:49:52 | 显示全部楼层
谢谢大神,牛牛牛牛!!!
发表于 2019-7-8 09:51:09 | 显示全部楼层
感谢大神的分享,先回帖再慢慢学习
发表于 2019-8-13 11:47:15 | 显示全部楼层
问一下这个对CAD版本有特别要求么
发表于 2019-11-25 14:48:58 | 显示全部楼层
很强大,谢谢大佬
发表于 2020-3-19 15:00:49 | 显示全部楼层
我的lisp学习就是在参考源代码中逐渐成长起来的!
发表于 2020-8-7 15:21:17 | 显示全部楼层
学习学习              
发表于 2020-8-11 10:01:55 | 显示全部楼层
学习了      
发表于 2020-8-11 10:33:40 | 显示全部楼层
本帖最后由 llsheng_73 于 2020-8-11 16:00 编辑

建议 (osnap pt "_END,_CEN,_NOD,_QUA,_INS,_TAN,_EXT")根据当前的捕捉设置来
我把G版那个按我的习惯修改了一下,没有对正交等模式进行处理
  1. (defun dectobin(n m / c f);;十进制转二进制
  2.   (setq f(if(< n 0)1 0)n(abs n))
  3.   (while(>(setq c(cons(rem n 2)c)n(/ n 2))0))
  4.   (while(<(length c)(1- m))(setq c(cons 0 c)))
  5.   (cons f c))
  6. (DEFUN DrawVecs(Pt Vecs Size Color / xdir);;;G版函数绘制矢量
  7.   (setq xdir(getvar'ucsxdir)
  8.   Vecs(mapcar'(lambda(x)(mapcar'(lambda(a)(mapcar'+ pt(mapcar'*(setq a(trans a 0 xdir)a(list(caddr a)(car a)))(List size size))))x))Vecs))
  9.   (GRVECS(APPLY 'APPEND(MAPCAR 'CONS(MAPCAR(FUNCTION (LAMBDA (x)Color))Vecs)Vecs))))
  10. (defun myosnap(pt / p mode osmod osmode Draftobj Size);;;修改G版函数带捕捉grread
  11.   (if(setq Draftobj(VLA-GET-DRAFTING(VLA-GET-PREFERENCES(VLAX-GET-ACAD-OBJECT)))
  12.      osmod'("_END," "_MID," "_CEN," "_NOD," "_QUA," "_INT," "_INS," "_PER," "_TAN," "_NEA," "_NON," "_APP," "_EXT," "_PAR")
  13.      osmode(reverse(DECTOBIN (getvar'osmode) 1))
  14.      size(*(/(getvar "viewsize")(cadr(getvar "screensize")))(VLA-GET-AUTOSNAPMARKERSIZE Draftobj))
  15.      p(osnap pt(apply'strcat(mapcar'(lambda(x y)(if(zerop x)""y))osmode osmod)))
  16.      mode(CDR(ASSOC
  17.       (if p(vl-some'(lambda(x)(if(equal p(cdr x)1e-8)(car x)))
  18.              (vl-remove'nil(mapcar'(lambda(x y / p)(if(zerop x)nil(if(setq p(osnap pt y))(cons y p))))osmode osmod)))"_NON,")
  19.       '(("_END,"((-1 1)(-1 -1))((-1 -1)(1 -1))((1 -1) (1 1))((1 1) (-1 1)))
  20.         ("_MID,"((0 1.414) (-1.225 -0.707)) ((-1.225 -0.707)(1.225 -0.707))((1.225 -0.707) (0 1.414)))
  21.         ("_CEN,"((0 1) (-0.707 0.707))((-0.707 0.707)(-1 0))((-1 0) (-0.707 -0.707))((-0.707 -0.707)(0 -1))
  22.          ((0 -1)(0.707 -0.707))((0.707 -0.707)(1 0)) ((1 0) (0.707 0.707))((0.707 0.707) (0 1)))
  23.         ("_NOD,"((0 1) (-0.707 0.707))((-0.707 0.707)(-1 0))((-1 0)(-0.707 -0.707))((-0.707 -0.707)(0 -1))((0 -1)(0.707 -0.707))
  24.          ((0.707 -0.707)(1 0))((1 0)(0.707 0.707))((0.707 0.707)(0 1))((-1 1)(1 -1))((-1 -1)(1 1)))
  25.         ("_QUA,"((0 1.414)(-1.414 0))((-1.414 0)(0 -1.414))((0 -1.414)(1.414 0))((1.414 0)(0 1.414)))
  26.         ("_INT,"((-1 1)(1 -1))((-1 -1)(1 1))((1 0.859)(-0.859 -1))((-1 0.859)(0.859 -1))((0.859 1)(-1 -0.859))((-0.859 1)(1 -0.859)))
  27.         ("_INS,"((-1 1)(-1 -0.1))((-1 -0.1)(0 -0.1))((0 -0.1)(0 -1.0))((0 -1.0)(1 -1))
  28.          ((1 -1)(1 0.1))((1 0.1)(0 0.1))((0 0.1) (0 1.0))((0 1.0)(-1 1)))
  29.         ("_PER,"((-1 1)(-1 -1))((-1 -1)(1 -1))((0 -1)(0 0))((0 0)(-1 0)))
  30.         ("_TAN,"((0 1)(-0.707 0.707))((-0.707 0.707)(-1 0))((-1 0)(-0.707 -0.707))((-0.707 -0.707)(0 -1))
  31.          ((0 -1)(0.707 -0.707))((0.707 -0.707)(1 0))((1 0)(0.707 0.707))((0.707 0.707)(0 1))((1 1)(-1 1)))
  32.         ("_NEA,"((-1 1)(1 -1))((1 -1)(-1 -1))((-1 -1)(1 1))((1 1)(-1 1)))
  33.         ("_NON,")
  34.         ("_APP,"((-1 1)(-1 -1))((-1 -1)(1 -1))((1 -1)(1 1))((1 1)(-1 1))((-1 1)(1 -1))((-1 -1)(1 1)))
  35.         ("_EXT,"((0.1 0)(0.13 0))((0.2 0)(0.23 0))((0.3 0)(0.33 0)))
  36.         ("_PAR"((0 1)(-1 -1))((1 1)(0 -1)))))))
  37.     (DrawVecs(setq p(if p p pt))mode size(VLA-GET-AUTOSNAPMARKERCOLOR Draftobj)))
  38.   (if p p pt))
  39. (defun c:tt(/ e p) ;;选择一个圆进行移动
  40.   (while(setq e(ssget":E:S"'((0 . "circle"))))
  41.     (setq e(entget(ssname e 0)))
  42.     (while(/=(car(setq p(grread t 15 0)))3)(redraw)
  43.       (if(=(car p)5)(entmod(append e(list(cons 10(myosnap(cadr p)))))))
  44.       ))
  45.   )


回复 支持 1 反对 0

使用道具 举报

发表于 2020-8-14 19:48:58 | 显示全部楼层
多谢大神分享,进来学习一下!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-16 23:42 , Processed in 0.164464 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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