我正在使用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和一些示例代碼的鏈接... –