明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: yu960312

[源码] 线割外形穿线孔绘制

[复制链接]
发表于 2022-5-15 21:49 | 显示全部楼层
发表于 2022-5-15 22:47 | 显示全部楼层

(entmakex (list '(0 . "CIRCLE") (cons 10 P5) (cons 40 R)))
(command "line" P5 p4  "");在这个位置加入这句就有引线了
发表于 2022-9-28 10:32 | 显示全部楼层
我的2014怎么和燕秀有冲突呀,用了后燕秀就掉了,不知道什么原因
发表于 2022-9-29 16:45 | 显示全部楼层
收藏学习了 感谢楼主
发表于 2023-6-8 11:37 | 显示全部楼层
各位帮忙给看看  是怎么回事?
一是退出命令时提示错误:quit / exit abort。这个倒没什么影响。
二是执行完命令后,再新建文件会提示:**express tools**-unable to load acetutil.arx ,必须重启CAD才能解决。

本帖子中包含更多资源

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

x
发表于 2023-7-3 15:49 | 显示全部楼层
统赢"MH"了解下
发表于 2023-7-3 21:06 | 显示全部楼层
仿写了一个,凑个热闹。
  1. (defun c:ac (/ N OLDOR OLDOS P1        P11 P2 P22 P33 P44 PMD PP SS SSNA SSP1 X
  2.              Y)
  3.   (setq oldos (getvar "osmode"))
  4.   (setq oldor (getvar "orthomode"))
  5.   (defun PickClosePt (obj p);;;多段线所点击点最近的一个顶点
  6.     (setq pp (vlax-curve-getclosestpointto obj (trans p 1 0))
  7.           n  (fix (vlax-curve-getparamatpoint obj pp))
  8.     )
  9.     (setq p1 (vlax-curve-getPointAtParam obj n))
  10.     (setq p2 (vlax-curve-getPointAtParam obj (1+ n)))
  11.     (if        (< (distance pp p1) (distance pp p2))
  12.       p1
  13.       p2
  14.     )
  15.   )
  16.   (princ "\n请选择要画穿线孔的多义线:")
  17.   (if (and (setq ss (entsel))
  18.            (= (cdr (assoc 0 (entget (car ss)))) "LWPOLYLINE")
  19.       )
  20.     (progn
  21.       (setvar "osmode" 0)
  22.       (setvar "orthomode" 1)
  23.       (setq ssna (vlax-ename->vla-object (car ss)))
  24.       (setq ssp1 (cadr ss))
  25.       (setq p11 (PickClosePt ssna ssp1))
  26.       (setq pmd (mapcar '(lambda (X Y) (* (+ X Y) 0.5)) P1 P2))
  27.       (cond ((and (= (cadr p11) (cadr pmd)) (> (car p11) (car pmd)))
  28.              (setq p22 (list (- (car p11) 2.0) (cadr p11)))
  29.             );;;2.0为起割点距离
  30.             ((and (= (cadr p11) (cadr pmd)) (< (car p11) (car pmd)))
  31.              (setq p22 (list (+ (car p11) 2.0) (cadr p11)))
  32.             )
  33.             ((and (= (car p11) (car pmd)) (> (cadr p11) (cadr pmd)))
  34.              (setq p22 (list (car p11) (- (cadr p11) 2.0)))
  35.             )
  36.             ((and (= (car p11) (car pmd)) (< (cadr p11) (cadr pmd)))
  37.              (setq p22 (list (car p11) (+ (cadr p11) 2.0)))
  38.             )
  39.       )
  40.       (princ "\n请选择下一点:")
  41.       (if (setq p33 (getpoint p22))
  42.         (progn
  43.           (cond        ((and (= (cadr p33) (cadr p22)) (> (car p33) (car p22)))
  44.                  (setq p44 (list (+ (car p22) 2.0) (cadr p22)))
  45.                 );;;2.0为起割点到穿丝孔距离
  46.                 ((and (= (cadr p33) (cadr p22)) (< (car p33) (car p22)))
  47.                  (setq p44 (list (- (car p22) 2.0) (cadr p22)))
  48.                 )
  49.                 ((and (= (car p33) (car p22)) (> (cadr p33) (cadr p22)))
  50.                  (setq p44 (list (car p22) (+ (cadr p22) 2.0)))
  51.                 )
  52.                 ((and (= (car p33) (car p22)) (< (cadr p33) (cadr p22)))
  53.                  (setq p44 (list (car p22) (- (cadr p22) 2.0)))
  54.                 )
  55.           )
  56.           (entmake
  57.             (list '(0 . "LINE") (cons 10 p22) (cons 11 p44) (cons 62 1))
  58.           )
  59.           (entmake (list '(0 . "Circle")
  60.                          (cons 10 p44)
  61.                          (cons 40 0.5);;;0.5为穿丝孔半径
  62.                          (cons 62 1)
  63.                    )
  64.           )
  65.           (setvar "osmode" oldos)
  66.           (setvar "orthomode" oldor)
  67.         )
  68.         (progn (princ "\n未选择到点,程序结束!")
  69.                (setvar "osmode" oldos)
  70.                (setvar "orthomode" oldor)
  71.         )
  72.       )
  73.     )
  74.     (progn (princ "\n未选择到图形或图形不是多义线,程序结束!")
  75.            (setvar "osmode" oldos)
  76.            (setvar "orthomode" oldor)
  77.     )
  78.   )
  79.   (princ)
  80. )
发表于 2023-7-4 08:41 | 显示全部楼层
andyding 发表于 2023-7-3 21:06
仿写了一个,凑个热闹。

感谢分享这么好的代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-3 22:02 , Processed in 0.359890 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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