乐筑天下

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

[编程交流] 自动标注尺寸

[复制链接]

5

主题

25

帖子

20

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 16:58:53 | 显示全部楼层 |阅读模式
大家好,
有人知道一个自动标注尺寸线的例程吗。
在我的例子中,这些线是一个二维三角形网格。
我已经尝试过qdim命令,不幸的是,这不适合,因为每条线都必须单独标注尺寸,而且qdim主要用于线性DIM,这不是我想要的。
 
有人见过或知道这样的事吗?
 
提前感谢
伊恩
回复

使用道具 举报

5

主题

25

帖子

20

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 17:03:27 | 显示全部楼层
这是一个二维三角形网格图。
如果有人想编写一个程序,以dimaligned的方式自动标注每条线的尺寸。如果我愿意付现金,我将不胜感激。
 
伊恩
三角网格。图纸
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-5 17:05:21 | 显示全部楼层
好的,我知道了
明天见
 
~'J'~
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-5 17:11:07 | 显示全部楼层
要查看问题,请运行以下代码
仅在此图形上从控制台!
(将此代码复制到编辑器中)
我修不好
我只用了2008(英语)
 
  1. (defun C:test (/ elist en p1 p2 pc ss)
  2. (setvar "osmode" 0)
  3. (command "_.zoom" "_e")
  4. (setq ss (ssget "_X" (list (cons 0  "LINE"))))
  5. (setq i -1)
  6. (while
  7. (setq en (ssname ss (setq i (1+ i))))
  8. (setq elist (entget en))
  9. (setq p1 (cdr (assoc 10 elist))
  10. p2 (cdr (assoc 11 elist))
  11. pc (mapcar (function (lambda(a b)(/ (+ a b) 2))) p1 p2)
  12. )
  13. (entmake (list (cons 0 "DIMENSION")
  14.    (cons 100  "AcDbEntity")
  15.    (cons 67 0)         
  16.    (cons 410  "Model")
  17.    (cons 8  "ZONE1")
  18.    (cons 100  "AcDbDimension")
  19.    (cons 2  "*D0")
  20.    (cons 10 (trans (list (car p2)(cadr p2) 0.0) 1 0))
  21.    (cons 11 (trans (list (car pc)(cadr pc) 0.0) 1 0))
  22.    (cons 12 (list 0. 0. 0.))
  23.    (cons 6  "Continuous")
  24.    (cons 62 2)
  25.    (cons 70  33)
  26.    (cons 1  "")
  27.    (cons 71  5)
  28.    (cons 72  1)
  29.    (cons 41  1.0)
  30.    (cons 42  (distance p1 p2))
  31.    (cons 52 0)
  32.    (cons 53 0)
  33.    (cons 54  0)
  34.    (cons 3  "Standard")
  35.    (cons 100  "AcDbAlignedDimension")
  36.    (cons 13 (trans (list (car p1)(cadr p1) 0.0) 1 0))
  37.    (cons 14 (trans (list (car p2)(cadr p2) 0.0) 1 0))
  38.    (cons 15 (list 0. 0. 0.))
  39.    (cons 16 (list 0. 0. 0.))
  40.   )
  41. )
  42. )
  43. (alert "Look at this, what's wrong?")
  44. (princ)
  45. )
  46. (C:test)
  47. (alert "There are all dims at the same point, what a ...???")

 
~'J'~
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-5 17:14:19 | 显示全部楼层
我发现哪里出了错
试试看吧
 
  1. (defun C:test (/ elist en p1 p2 pc ss)
  2. (setvar "osmode" 0)
  3. (command "_.zoom" "_e")
  4. (setq ss (ssget "_X" (list (cons 0  "LINE"))))
  5. (setq i -1)
  6. (while
  7. (setq en (ssname ss (setq i (1+ i))))
  8. (setq elist (entget en))
  9. (setq p1 (cdr (assoc 10 elist))
  10. p2 (cdr (assoc 11 elist))
  11. pc (mapcar (function (lambda(a b)(/ (+ a b) 2))) p1 p2)
  12. )
  13. (entmake (list (cons 0 "DIMENSION")
  14.    (cons 100  "AcDbEntity")
  15.    (cons 67 0)         
  16.    (cons 410  "Model")
  17.    (cons 8  "ZONE1")
  18.    (cons 100  "AcDbDimension")
  19.    (cons 10 (trans (list (car p2)(cadr p2) 0.0) 1 0))
  20.    (cons 11 (trans (list (car pc)(cadr pc) 0.0) 1 0))
  21.    (cons 12 (list 0. 0. 0.))
  22.    (cons 6  "Continuous")
  23.    (cons 62 2)
  24.    (cons 70  33)
  25.    (cons 1  "")
  26.    (cons 71  5)
  27.    (cons 72  1)
  28.    (cons 41  1.0)
  29.    (cons 42  (distance p1 p2))
  30.    (cons 52 0)
  31.    (cons 53 0)
  32.    (cons 54  0)
  33.    (cons 3  "Standard")
  34.    (cons 100  "AcDbAlignedDimension")
  35.    (cons 13 (trans (list (car p1)(cadr p1) 0.0) 1 0))
  36.    (cons 14 (trans (list (car p2)(cadr p2) 0.0) 1 0))
  37.    (cons 15 (list 0. 0. 0.))
  38.    (cons 16 (list 0. 0. 0.))
  39.   )
  40. )
  41. )
  42. (alert "Done?")
  43. (princ)
  44. )

 
~'J'~
回复

使用道具 举报

5

主题

25

帖子

20

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 17:17:28 | 显示全部楼层
Fixo你太棒了!
那一套为我节省了大量时间。
你有贝宝吗?我知道你什么也没要,但我想你至少应该请我喝一杯。
 
穆霍斯·格雷西亚
伊恩
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-5 17:19:40 | 显示全部楼层
算了吧,伊恩
下次你会帮助别人
很乐意帮忙,
当做
 
~'J'~
回复

使用道具 举报

0

主题

1

帖子

5

银币

限制会员

铜币
-2
发表于 2022-7-5 17:23:37 | 显示全部楼层
将此VBA子程序添加到acad。dvb并在网格绘制打开的情况下运行。所有尺寸将与每个线条图元对齐。。。只要给我发邮件,你想要多少钱都行。。。英雄联盟
 
  1. Public Sub DimAlignAll()
  2. Dim oAcEntity As AcadEntity
  3.    'use the current drawing thats open
  4.    For Each oAcEntity In ThisDrawing.ModelSpace
  5.      Select Case oAcEntity.ObjectName
  6.        Case "AcDbLine"
  7.          Dim oAcLine As AcadLine
  8.          Set oAcLine = oAcEntity
  9.          Dim aTxtPt(2) As Double
  10.          aTxtPt(0) = oAcLine.StartPoint(0)
  11.          aTxtPt(1) = oAcLine.StartPoint(1)
  12.          With ThisDrawing.ModelSpace.AddDimAligned(oAcLine.StartPoint, oAcLine.EndPoint, aTxtPt)
  13.            .Update
  14.          End With
  15.      End Select
  16.    Next
  17. End Sub
回复

使用道具 举报

0

主题

2

帖子

2

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-5 17:25:20 | 显示全部楼层
这是lisp程序吗?命令名是什么?
 
thnks。
回复

使用道具 举报

4

主题

2143

帖子

2197

银币

限制会员

铜币
-24
发表于 2022-7-5 17:28:26 | 显示全部楼层
哪一个?
 
fixo的是LISP,buddygillespie的是VBA。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 08:10 , Processed in 1.314372 second(s), 84 queries .

© 2020-2025 乐筑天下

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