我正在使用Map 3D绘制不精确的地图。我有尺寸我可以与绘图重叠的DWG。我需要对齐这些维度,但我不想在每次拉伸它后输入值。有没有办法将测量结果修改为不改变? AutoCAD /地图3D将当前测量值放入文本覆盖
0
A
回答
1
我不相信这是有关编程,但可以override dimension values AutoCAD平台。
您可以尝试in VB
Sub OverrideDimensionText()
Dim dimObj As AcadDimAligned
Dim point1(0 To 2) As Double
Dim point2(0 To 2) As Double
Dim location(0 To 2) As Double
' Define the dimension
point1(0) = 5#: point1(1) = 3#: point1(2) = 0#
point2(0) = 10#: point2(1) = 3#: point2(2) = 0#
location(0) = 7.5: location(1) = 5#: location(2) = 0#
' Create an aligned dimension object in model space
Set dimObj = ThisDrawing.ModelSpace. _
AddDimAligned(point1, point2, location)
' Change the text string for the dimension
dimObj.TextOverride = "The value is <>"
dimObj.Update
End Sub
0
更新: 我是错的最后一条语句,但在这里是解决方案: http://www.cadtutor.net/forum/archive/index.php/t-31690.html VVA得到最终的Lisp代码。用命令DIMO它会覆盖文本。
;;Dim override
(defun c:dimo (/ COPYDIM CURLAY DELSET DIMLST
DIMSET ERRCOUNT LAYCOL LENT
NEXTENT OVTEXT *ERROR* ACTDOC
OLDECHO)
;;; Vladimir Smirnov {Smirnoff} on dwg.ru
(defun *ERROR* (msg)
(setvar "CMDECHO" oldEcho)
); end of error
(vl-load-com)
(setq oldEcho(getvar "CMDECHO")
actDoc(vla-get-ActiveDocument
(vlax-get-acad-object))
layCol(vla-get-Layers actDoc)
); end setq
(setvar "CMDECHO" 0)
(if
(setq dimSet
(ssget "_:L" '((0 . "DIMENSION"))))
(progn
(setq dimLst
(mapcar 'vlax-ename->vla-object
(vl-remove-if 'listp
(mapcar 'cadr(ssnamex dimSet))))
); end setq
(vla-StartUndoMark actDoc)
(foreach dim dimLst
(vla-put-TextOverride dim (dim-get-text-string (vlax-vla-object->ename dim)))
(vla-put-Color dim 22)
)
(vla-EndUndoMark actDoc)
); end progn
); end if
(setvar "CMDECHO" oldEcho)
(princ)
); end of c:dimo
(defun Col_Item_Find (Collection Item/result)
(if
(not
(vl-catch-all-error-p
(setq result
(vl-catch-all-apply 'vla-item
(list Collection Item)))))
result
); end if
); end of Col_Item_Find
;;; Dim restore
(defun c:dimr (/ COPYDIM CURLAY DELSET DIMLST
DIMSET ERRCOUNT LAYCOL LENT
NEXTENT OVTEXT *ERROR* ACTDOC
OLDECHO)
;;; Vladimir Smirnov {Smirnoff} on dwg.ru
(defun *ERROR* (msg)
(setvar "CMDECHO" oldEcho)
); end of error
(vl-load-com)
(setq oldEcho(getvar "CMDECHO")
actDoc(vla-get-ActiveDocument
(vlax-get-acad-object))
layCol(vla-get-Layers actDoc)
); end setq
(setvar "CMDECHO" 0)
(if
(setq dimSet
(ssget '((0 . "DIMENSION"))))
(progn
(setq dimLst
(mapcar 'vlax-ename->vla-object
(vl-remove-if 'listp
(mapcar 'cadr(ssnamex dimSet))))
errCount 0
); end setq
(vla-StartUndoMark actDoc)
(foreach dim dimLst
(setq curLay(vla-get-Layer dim))
(if
(/= :vlax-true
(vla-get-Lock(Col_Item_Find layCol curLay)))
(progn
(vla-put-TextOverride dim "<>")
(vla-put-Color dim 82)
); end progn
(setq errCount(1+ errCount))
); end if
); end foreach
(if(/= 0 errCount)
(princ
(strcat "\n"
(itoa errCount)" were on locked layer!"))
); end if
(vla-EndUndoMark actDoc)
); end progn
); end if
(setvar "CMDECHO" oldEcho)
(princ)
)
(defun mip_MTEXT_Unformat (Mtext/text Str)
(setq MM Mtext)
(setq Text "")
(while (/= Mtext "")
(cond
((wcmatch (strcase (setq Str (substr Mtext 1 2))) "\\[\\{}]")
(setq Mtext (substr Mtext 3) Text (strcat Text Str)))
((wcmatch (substr Mtext 1 1) "[{}]")(setq Mtext (substr Mtext 2)))
((wcmatch (strcase (setq Str (substr Mtext 1 2))) "\\[LO`~]")
(setq Mtext (substr Mtext 3)))
((wcmatch (strcase (substr Mtext 1 2)) "\\[ACFHQTW]")
(setq Mtext (substr Mtext (+ 2 (vl-string-search ";" Mtext)))))
((wcmatch (strcase (substr mtext 1 4)) "\\PQ[CRJD],\\PXQ") ;;;Add by KPblC
(setq mtext (substr mtext (+ 2 (vl-string-search ";" mtext))))
)
((wcmatch (strcase (substr Mtext 1 2)) "\\P")
(if (or
(zerop (strlen Text))
(= " " (substr Text (strlen Text)))
(= " " (substr Mtext 3 1)))
(setq Mtext (substr Mtext 3))
(setq Mtext (substr Mtext 3) Text (strcat Text " "))))
((wcmatch (strcase (substr Mtext 1 2)) "\\S")
(setq Str (substr Mtext 3 (- (vl-string-search ";" Mtext) 2))
Text (strcat Text (vl-string-translate "#^\\" "/^\\" Str))
Mtext (substr Mtext (+ 4 (strlen Str)))))
(t (setq Text (strcat Text (substr Mtext 1 1)) Mtext (substr Mtext 2)))))
Text)
(defun dim-get-text-string (dim/str)
(setq str "")
(vlax-for item (vla-item (vla-get-blocks
(vla-get-activedocument (vlax-get-acad-object))
) ;_ end of vla-get-Blocks
(cdr (assoc 2 (entget dim)))
) ;_ end of vla-item
(if (vlax-property-available-p item 'Textstring)
(setq str (vla-get-textstring item))
)
)
(mip_MTEXT_Unformat str)
)
(princ "\nType Dimo to override and Dimr to restore")
相关问题
- 1. Var声明会覆盖当前变量
- 2. 使用kml文件时,Google地图缩放将被覆盖
- 3. 试图覆盖文本输入高度
- 4. JSM导入来覆盖当前对象
- 5. 将覆盖图应用于缩放位图 - 缩放覆盖图的问题
- 6. 错误在当前位置将覆盖
- 7. 可缩放的谷歌地图覆盖
- 8. 页,当前文件保存为.doc和覆盖当前文件
- 9. 当前文件如何被覆盖?
- 10. 谷歌地球API - 3D模型覆盖
- 11. 覆盖GGPLOT2图例文本
- 12. 当前上下文中的测试无覆盖率数据
- 13. 将文件中的信息拉入地图并需要覆盖重复值?
- 14. 颠覆 - 将版本号放入文件
- 15. Android,地图覆盖
- 16. Android地图覆盖
- 17. 将样式属性的当前值放入变量
- 18. IMobileServiceSyncHandler - 覆盖本地版本
- 19. Asp.Net MVC测试版:以前的RouteData覆盖当前的RouteData?
- 20. Android TextView setText覆盖以前的文本
- 21. 使用Iron Python的文档属性覆盖当前列值
- 22. 如何防止签入的文件覆盖本地版本?
- 23. 如何将原始地图数据带入Google地图覆盖图/图层?
- 24. c#覆盖富文本框中的当前行(在写入之前将光标返回到行的左侧)
- 25. 如何覆盖android地图视图上的文本
- 26. 将方法作为值放入地图
- 27. 将值放入地图时的空点
- 28. 删除跟踪文件,将覆盖本地文件
- 29. PDFSharp覆盖文本
- 30. JavaScript文本覆盖
谢谢,我知道我可以手动覆盖。但是我有成千上万个这样的对象,这需要很长时间。如果没有其他方法,我正在考虑创建一个简单的Lisp函数。不幸的是,我对此没有太多的了解。 – Gary
我刚刚添加了一个VB和一些示例代码的链接... –