joesatch11 发表于 2022-7-5 16:09:51

特定尺寸提取

您好,我看到很多人有类似的要求。我有一个不同的问题,我只需要提取每个单独窗口的随附DWG文件中标注为“F.S.”的尺寸。Excel文件应与所附图像相似。因此,使用的方法需要识别窗口名称(A、B),并在Excel文件中列出相应窗口的尺寸。
任何帮助都将不胜感激!,提前谢谢!
立面图。图纸

BIGAL 发表于 2022-7-5 16:30:44

看看你的dwg,我会做出以下评论,是的,你可以选择3个DIM并写入excel,就我而言,我会更深入地研究包含来自窗框尺寸的不可见属性的“A”块,这样做更容易。虽然我不画窗口作为一个标准,我也会看看动态块,再次点击一次,并获得有关该窗口的所有信息。
 
把前端放在这类东西上可以节省很多时间,回答这十个问题,然后全部完成。
 
这是一大步,但在座的其他人可能会同意,你永远不会回头,产量将增加。比尔:有什么评论吗?
 
无论如何,如果有人不打败我,我会尽力为你做点什么。

BIGAL 发表于 2022-7-5 16:43:07

我有点让它工作,因为我的工作指标,这将是完美的工作脚增加了开销,其他人可能知道一种方法,但它确实增加了价值的电子表格,因为你选择。
 

; this will read various objects in the dwg
; its hard coded for a fileame for testingchange to pick file name
; using findfile etc
; it is hard coded for 3 picks
; picking dims returns the measurement so UNITS must be reset

(defun objectis(obj / )
(setq objname (vla-get-objectName obj))
(cond
((= objname "AcDbText")(setq txtstr (vla-get-textstring obj)))
;((= objname "AcDbMText")(stripmtxt))
((= objname "AcDbMText")(setq txtstr (vla-get-textstring obj)))
((= objname "AcDbRotatedDimension")(setq txtstr (rtos (vla-get-measurement obj)5 3)))
)
(if (= txtstr nil)(alert "object not supported"))
)

(defun stripmtxt ( / )
(setq txtstr (vla-get-textstring obj))
(setq txtstr (LM:UnFormat (txtstr T )))
)



(defun c:doentry ( / obj)
(setq col 1)
(repeat 3
(setq obj (vlax-ename->vla-object (car (entsel "\nPick object"))))
(setq row (+ maxrow# 1))
(objectis obj)
(setq txtstr (vl-string-subst "" "F.S." TxtStr))
(alert txtstr)
(PutCell (strcat (NUMBER2ALPHA COL) (rtos Row 2 0)) txtstr )
(setq col (+ col 1))
)
(setq maxrow# (+ maxrow# 1))
)

(defun c:doclose ( / )
(CLOSEEXCEL "C:\\temp\\elwidht.XLS")
)

)
;------------------------------------------------------------------------------------------------
; starts here
;------------------------------------------------------------------------------------------------

(if (not openexcel)(load "getexcel.lsp"))
(if (notLM:UnFormat)(load "Unformat-mtext-string"))

; hard coded for testing excel must exist
(OpenExcel "C:\\Temp\\elwidht.xlsx" "Sheet1" t)

; need this to find max row col as exists
(setq excelrc (VLAX-GET-PROPERTY *EXCELAPP%'selection))
; only need to run once
(SETQ MAXROW# (VLAx-GET-PROPERTY excelrc 'Row))
(SETQ MAXCOLUMN# (VLAX-GET-PROPERTY excelrc 'column))

; start for 1st time when loading
(c:doentry)


获取Excel。lsp
埃尔维特。xlsx公司

joesatch11 发表于 2022-7-5 17:01:48

谢谢你的帮助,我看到你几乎得到了它的工作,我不知道该做什么后,我上传了。LSP,但我确实注意到Excel文件中的29 3/8“尺寸列在高度下,而它本应是宽度。此外,请记住,我只需要列出“F.S.”尺寸(可能会使事情更容易)。

BIGAL 发表于 2022-7-5 17:15:52

拾取顺序只是按所需顺序拾取3个对象。FS不计算,因为返回的值是测量值而不是文本。在测试期间,我将dim分解了几次,以获得文本形式的值。
 
dim命令将“测量值”自动转换为英尺和分数英寸。我计算出它需要(rtos x 5 3)十进制英寸加分数
页: [1]
查看完整版本: 特定尺寸提取