乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 34|回复: 7

[编程交流] 预定尺寸DIMLINEAR

[复制链接]

18

主题

66

帖子

48

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
90
发表于 2022-7-5 20:29:58 | 显示全部楼层 |阅读模式
大家好,
我需要一个lisp帮助,它将在dwg上插入尺寸。根据一些标准:
-选择点A和B
-选择CG
-为特定长度创建尺寸标注(见附件)
-对齐cg上的尺寸字符串。
 
谢谢你的帮助
4点即时消息。pdf
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 20:43:32 | 显示全部楼层
试试看,让我知道。
 
  1. (defun c:Test (/ a b c d x 1p 2p 3p 4p bk)
  2. ;;        Tharwat 09.Dec.2014        ;;
  3. (if
  4.    (and
  5.      (setq a (getpoint "\n Specify point A :"))
  6.      (setq b (getpoint "\n Specify point B on the right side :" a))
  7.      (if (and (> (car b) (car a))
  8.               (equal (cadr a) (cadr b) 1e-4)
  9.          )
  10.        t
  11.        (progn
  12.          (alert "Point B must be on the right side of point A and on the same line ")
  13.          nil
  14.        )
  15.      )
  16.      (setq c (getpoint "\n Specify point CG below the mid-point of A and B :"))
  17.      (setq d (distance a b))
  18.    )
  19.     (cond
  20.       ((and (< (cadr c) (cadr a))
  21.             (< (car c) (car b))
  22.             (> (car c) (car a))
  23.             (< 0
  24.                (- (distance a (setq x (list (car c) (cadr a))))
  25.                   (+ (* d 0.292) (/ (* d 0.208) 2.))
  26.                )
  27.             )
  28.        )
  29.        (setq 1p (polar x pi (+ (* d 0.292) (/ (* d 0.208) 2.)))
  30.              2p (polar 1p 0. (* d 0.292))
  31.              3p (polar x 0. (/ (* d 0.208) 2.))
  32.              4p (polar 3p 0. (* d 0.292))
  33.              bk (vlax-get (vla-get-activelayout
  34.                             (vla-get-activedocument (vlax-get-acad-object))
  35.                           )
  36.                           'Block
  37.                 )
  38.        )
  39.        (mapcar
  40.          '(lambda (q p)
  41.             (vla-AddDimAligned
  42.               bk
  43.               (vlax-3D-point q)
  44.               (vlax-3D-point p)
  45.               (vlax-3D-point (polar q (* pi 0.5) (/ (* d 0.208) 2.)))
  46.             )
  47.           )
  48.          (list a 1p 2p 3p 4p)
  49.          (list 1p 2p 3p 4p b)
  50.        )
  51.        (vla-AddDimAligned
  52.          bk
  53.          (vlax-3D-point a)
  54.          (vlax-3D-point b)
  55.          (vlax-3D-point (polar a (* pi 0.5) (* d 0.208)))
  56.        )
  57.       )
  58.       (t (princ "\n ** Invalid inputs !! **"))
  59.     )
  60. )
  61. (princ)
  62. )(vl-load-com)
回复

使用道具 举报

18

主题

66

帖子

48

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
90
发表于 2022-7-5 20:54:55 | 显示全部楼层
这真的很好。
如果不太麻烦,请将尺寸四舍五入到最近的英尺(例如:7’-5 15/16”到7’-0;7’-6”到8’-0”)。
 
非常感谢您的时间和出色的工作。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 20:58:06 | 显示全部楼层
 
非常欢迎你。很乐意帮忙
 
 
对不起,我是公制的,不知道如何处理英尺单位,所以也许其他人可以修改我的程序,以满足您在这方面的需要。
 
注意:最好在中发布图像。jpeg(在以后的文章中)和这种格式可以立即在线程中显示图像,并且不需要下载就可以看到图像。谢谢
 
祝你好运
回复

使用道具 举报

18

主题

66

帖子

48

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
90
发表于 2022-7-5 21:06:57 | 显示全部楼层
再次感谢你的Lisp程序
祝你有美好的一天。
回复

使用道具 举报

5

主题

956

帖子

963

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 21:13:06 | 显示全部楼层
 
我们所能做的就是将精度设置为零。
这是本机的,最小值为0
  1. (defun c:dimft (/ *error* u ss)
  2. (if (setq ss (ssget ":L" '((0 . "DIMENSION"))))
  3.    (foreach obj (acet-ss-to-list ss)
  4.      (mapcar ''((a b) (vlax-put  (vlax-ename->vla-object obj) a b))
  5.       '("UnitsFormat" "PrimaryUnitsPrecision") '(4 [color="red"]0[/color])) ;_ end of mapcar
  6.      )
  7.    ) ;_ end of if
  8. (princ)
  9. ) ;_ end of defun
回复

使用道具 举报

18

主题

66

帖子

48

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
90
发表于 2022-7-5 21:21:39 | 显示全部楼层
hanhphuc,
 
谢谢你的代码。
有没有办法只将代码应用于使用Tharwat的lisp计算的那些维度(并成为其中的一部分)?
再次感谢您抽出时间。
回复

使用道具 举报

5

主题

956

帖子

963

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 21:34:27 | 显示全部楼层
 
尝试
  1. (defun c:Test (/ a b c d x 1p 2p 3p 4p bk [color="red"]m-ft[/color])
  2. ;;        Tharwat 09.Dec.2014        ;;
  3. [color="red"](defun m-ft nil
  4. (mapcar ''((a b) (vlax-put  (vlax-ename->vla-object (entlast)) a b))
  5.       '("UnitsFormat" "PrimaryUnitsPrecision") '(4 0)) ;_ end of mapcar
  6. )[/color]
  7. ...
  8. ...
  9. ...
  10. ...
  11. ...
  12. [color="#696969"] (mapcar
  13.          '(lambda (q p)
  14.             (vla-AddDimAligned
  15.               bk
  16.               (vlax-3D-point q)
  17.               (vlax-3D-point p)
  18.               (vlax-3D-point (polar q (* pi 0.5) (/ (* d 0.208) 2.)))
  19.             )
  20.      
  21. [color="red"](m-ft)[/color]
  22.      
  23.           )
  24.          (list a 1p 2p 3p 4p)
  25.          (list 1p 2p 3p 4p b)
  26.        )
  27.        (vla-AddDimAligned
  28.          bk
  29.          (vlax-3D-point a)
  30.          (vlax-3D-point b)
  31.          (vlax-3D-point (polar a (* pi 0.5) (* d 0.208)))
  32.        )
  33. [color="red"](m-ft)[/color]
  34.       )
  35.       (t (princ "\n ** Invalid inputs !! **"))
  36.     )[/color]
  37. ...
  38. ...

嗯,所有的功劳都归功于塔瓦
vlax get和vlax put
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-11 09:17 , Processed in 1.548217 second(s), 79 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表