明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1179|回复: 18

[讨论] 两点动态画弧

[复制链接]
发表于 2024-6-28 06:19:24 | 显示全部楼层 |阅读模式
本帖最后由 尘缘一生 于 2024-6-28 09:36 编辑

闲来手痒,为画弧方便,新作一功能
仅为展示,测试需三领的支持
函数不复杂,字面一看即明白,换成你的即可




  1. ;;两点动态圆弧------(一级)-----
  2. ;三领设计 V3.0 Modify by 尘缘一生  QQ:15290049 2024.6.28
  3. ;功能:给2点画弧,且提示弧长,半径,并支持扑捉,TAB键乒乓开关信息
  4. (defun 2p-dd-arc (p1 p2 / p3 nam nam1 obj nam2 ent ent1 loop bb pt f3 d ang s0 s s1 s2 s3)
  5.   (command "_.undo" "be")
  6.   (setq s0 "\n->动态圆弧 [信息开关(TAB)/扑捉(F3)/定位(Left-Right-Other keys)]")
  7.   (setq p3 (polar (sl:mid p1 p2) (+ (angle p1 p2) pi2) 50) s1 "mm" s2 "..开.." s3 "..关..")
  8.   (make-arc p1 p3 p2) ;3P画弧
  9.   (setq nam (entlast))
  10.   (slmkwz (strcat "R=" (rtos (* (getvar "DIMLFAC") (dxf1 nam 40))) s1) p3 3.0 0 nil "f-i-n-d" nil 6 "m") ;中心定位写字
  11.   (setq ent (entget (setq nam1 (entlast))) obj (en2obj nam1))
  12.   (slmkwz (strcat "L=" (rtos (* (getvar "DIMLFAC") (sllen nam))) s1) p3 3.0 0 nil "f-i-n-d" nil 6 "m")
  13.   (setq ent1 (entget (setq nam2 (entlast))))
  14.   (setq loop t f3 (getvar "OSMODE") s s2)
  15.   (princ (strcat s0 "(" s ")"))
  16.   (while loop
  17.     (setq bb (grread t 15 2))
  18.     (setq pt (cadr bb) d (p2uu 20))
  19.     (cond
  20.       ((equal bb '(2 6));F3切换捕捉开关
  21.         (cond
  22.           ((and (< f3 16384) (/= f3 0))
  23.             (setq f3 (+ f3 16384))
  24.             (prompt "\n <对象捕捉 关>")
  25.           )
  26.           ((or (= f3 0) (>= f3 16384))
  27.             (setq f3 16383)
  28.             (prompt "\n <对象捕捉 开>")
  29.           )
  30.         )
  31.         (setvar "OSMODE" f3)(redraw)
  32.       )   
  33.       ((= (car bb) 5)
  34.         (redraw)
  35.         (if (and (<= f3 16384) (> f3 0))
  36.           (setq pt (slosnappt nam pt))
  37.         )
  38.         (setq pt (trans pt 1 0))
  39.         (entdel nam)
  40.         (make-arc p1 pt p2)
  41.         (setq nam (entlast))
  42.         (if (= s s2)
  43.           (progn
  44.             (setq ang (angle-sharp (angle '(0.0 0.0 0.0) (vlax-curve-getFirstDeriv nam (vlax-curve-getparamatpoint nam pt)))))
  45.             (setq pt (polar pt (+ ang pi2) (* 0.7 d)))
  46.             (entmod (emod (emod (emod (emod (emod ent 1 (strcat "R=" (rtos (* (getvar "DIMLFAC") (dxf1 nam 40))) s1)) 10 pt) 11 pt) 40 d) 50 ang))
  47.             (setq pt (polar pt (+ ang pi2) (* 1.3 d)))
  48.             (entmod (emod (emod (emod (emod (emod ent1 1 (strcat "L=" (rtos (* (getvar "DIMLFAC") (sllen nam))) s1)) 10 pt) 11 pt) 40 d) 50 ang))
  49.           )
  50.         )
  51.       )
  52.       ((member bb '((2 9))) ;;table 信息关
  53.         (entdel nam1) (entdel nam2)
  54.         (if (not (vlax-erased-p obj)) (setq s s2) (setq s s3))
  55.         (princ (strcat s0 "(" s ")"))
  56.       )
  57.       ((or t (equal (car bb) 3) (member (car bb) '(11 25)));;左、右、其余键
  58.         (setq loop nil)
  59.       )
  60.     )
  61.   )
  62.   (command "_.undo" "e")
  63.   (redraw)
  64. )
  65. ;;测试-----(需要三领支持测试)
  66. (defun c:tt (/ p1 p2)
  67.   (setq p1 (getpoint "\n 圆弧第一点:")
  68.     p2 (getpoint p1 "\n 圆弧第二点:")
  69.   )
  70.   (2p-dd-arc p1 p2)
  71. )
三领设计 V3.0 永久下载地址:

链接:https://pan.baidu.com/s/1WsH2nmBHUhb0T3STais1Hg
提取码:i2uj



本帖子中包含更多资源

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

x

评分

参与人数 2明经币 +2 收起 理由
hubeiwdlue + 1 赞一个!
tranque + 1 赞一个!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2024-6-28 22:13:00 | 显示全部楼层
bai2000 发表于 2024-6-28 21:00
slmkwz 参数都是什么?子函数发个学习一下

;;写文字------(一级)---------
;;(slmkwz  文字  基点  高度  角度  宽高比  图层  字型  颜色  方式 t= "m" 中心对齐 "z" 左对齐)
;;(slmkwz "XZY" (getpoint) nil nil nil "0sx" "hz" 7 "z")
(defun slmkwz (s p0 h ang bk ly sty col k / elist elist1)
        (setq elist
                (list  '(0 . "TEXT") (cons 1 s)
                        (if ly
                                (cons 8 ly)   ;图层
                                (cons 8 (getvar "CLAYER"))
                        )
                        (if col
                                (cons 62 col)   ;颜色
                                (cons 62 (atoi (slsjqs)))
                        )
                        (if sty
                                (cons 7 sty)
                                (cons 7 $hz)
                        )
                        (if p0
                                (cons 10 p0)
                                (cons 10 (setq p0 (cadr (grread 5))))
                        )
                        (if h
                                (cons 40 (* slbl h))
                                (cons 40 (* slbl 5.0))
                        )
                        (if ang
                                (cons 50 ang)
                                (cons 50 0.0)
                        )
                        (if bk
                                (cons 41 bk)
                                (cons 41 0.7)
                        )
                )
        )
        (setq elist1 (list (cons 72 1) (cons 11 p0) (cons 73 2)))
        (if (= k "m")
                (entmake (append elist elist1))
                (entmake elist)
        )
)
 楼主| 发表于 2024-7-1 15:19:46 | 显示全部楼层
本帖最后由 尘缘一生 于 2024-7-1 15:25 编辑
sachindkini 发表于 2024-7-1 13:11
dear sir,
thanks for sharing
your toll are very flexible for use

三领的集成,是自动判定版本的,英文版CAD安装,就是英文版的了。

英文版,可以改一下解压目录名字为:D:\SLdesign可以下载手动安装版本 ZIP

也可以EXE安装完,改这个解压目录名即可


链接:https://pan.baidu.com/s/1NSuDJkZC2_XNf6BgX6y5hw
提取码:tk8c


发表于 2024-7-6 18:42:18 | 显示全部楼层
尘缘一生 发表于 2024-7-6 17:03
乱码?请问朋友,你用的CAD,是哪个地区,那个版本?
(getvar "SYSCODEPAGE")
用这句,是什么结果?

dear sir
im from india

  1. (getvar "SYSCODEPAGE")
  2. "ANSI_1252"
复制代码
发表于 2024-6-28 09:26:20 | 显示全部楼层
没有实际用途的显摆。
发表于 2024-6-28 09:31:54 | 显示全部楼层
能不能加一个捕捉功能,对建筑弧形外轮廓还是有用的。

 楼主| 发表于 2024-6-28 09:38:59 | 显示全部楼层
sniper1111 发表于 2024-6-28 09:31
能不能加一个捕捉功能,对建筑弧形外轮廓还是有用的。

对啊,F3即可扑捉。
发表于 2024-6-28 11:44:29 | 显示全部楼层
这个捕捉能捕捉到象限点吗?最简单的象限点就是矩形的中心点
发表于 2024-6-28 14:25:32 | 显示全部楼层
有点牛逼,牛逼,牛逼,牛逼,牛逼,牛逼,牛逼,
发表于 2024-6-28 15:09:37 | 显示全部楼层
kozmosovia 发表于 2024-6-28 09:26
没有实际用途的显摆。

有源码,可以学习其中的代码。
 楼主| 发表于 2024-6-28 18:22:59 | 显示全部楼层
228378553 发表于 2024-6-28 11:44
这个捕捉能捕捉到象限点吗?最简单的象限点就是矩形的中心点

目前,grread下整合的扑捉函数,还做不到这一点。
发表于 2024-6-28 21:00:53 | 显示全部楼层
slmkwz 参数都是什么?子函数发个学习一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 14:28 , Processed in 0.203130 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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