mjm 发表于 2022-7-5 16:43:29

进度报告-正在查找

你好不熟悉autolisp或脚本
 
 
我在一家土方工程公司工作,我们正在寻找一种方法,通过在autocad中为某个属性使用另一种颜色来更新进度完成情况。示例-根据excel数据,标段1完成10%,标段10完成30%。我希望标段1(10%)为浅绿色,标段10(30%)为深绿色和深色,以实现更高的完成率,并在excel数据表更新时更新autocad图纸。如果可能的话,我大约有400个地块要以这种方式编程。每个批次将有10个条件(即10%、20%、30%……到100%)
 
 
非常感谢。

BIGAL 发表于 2022-7-5 16:49:35

可以做得很简单,简单的方法是将excel数据导出到csv。现在硬点你的阴影区域,我认为你是阴影需要找到一些如何,如果你有很多标签,那么可以找到lot10插入pt返回和一个ssget用于搜索一个小区域在这个位置的图案填充希望也在一个单独的层,然后改变图案颜色。
 
我确实说过,从excel直接读取要简单得多的代码。
 
需要一个样本dwg和说excel数据只有几个。那么我相信接下来会有一个答案。以前有人问过这个问题,不知道如何搜索它。

steven-g 发表于 2022-7-5 16:54:16

您可以使用excel中创建的此脚本手动执行此操作。在图形中,需要将每个打印图案填充放置在其自己的图层上,并将颜色设置为“按图层”。
可能有excel工作表、数据链接到autocad中的表格和lisp例程来自动更新图层(但我使用LT),有人可能会提供帮助。
 
编辑:
我在上面找到了色码http://sub-atomic.com/~moses/acadcolors。html
彩色图。图纸
彩色图。xls公司

mjm 发表于 2022-7-5 16:55:09

嗨,谢谢你的回复。这是有问题的图纸。每个房产都有一个标识地块的标签。我还没有指定图层或图案填充颜色,因为我不确定哪种颜色最有效。我必须承认,我在过去经常使用CAD
十年了,但老实说,直到现在才需要将和lisp程序链接在一起。让我觉得自己过时了,哈哈
 
 
我已附上cad文件和示例excel表。控制器将更新他们自己创建的工作表,但链接到此简化工作表应该不会有问题。正如你所看到的,有很多属性。随着excel表的更新(由管理员/管理人员更新),我希望每个酒店的颜色随着excel表中数据的变化而变化,从而通过图例确定每个酒店的进度。注意,对于不动产区块(这就像一座城镇住宅,一栋建筑中有许多单元),每个区块将有3到10个地块(标识示例区块201-1201,2201-3的标签),每个区块中的所有地块将一起更新
 
 
非常感谢您对此事的见解
测试单程序。xlsx公司
雨衣。图纸

LibertyOne 发表于 2022-7-5 17:02:01

我个人会使用10、20、30、40、50、60、70、80、90和100种颜色。它给你一个很好的渐变,从红色到绿色再到黄色。

mjm 发表于 2022-7-5 17:03:01

谢谢你,liberytone,等我把它安装好后,我会试试的

BIGAL 发表于 2022-7-5 17:08:17

由于每个批次都有编号,因此只需更改图案填充层即可完成。我会尽量找时间的。

mjm 发表于 2022-7-5 17:11:46

我期待着你的建议

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

这是版本1,它将读取文件位,它将是lotnum,layername文件名,例如c:/temp/lisp/lots。csv
 

; reads a csv file lotnum,layername and changes hatch located a text point
;by Alan H May 2014 thanks also to Lee-mac

;; String to List-Lee Mac
;; Separates a string using a given delimiter
;; str - String to process
;; del - Delimiter by which to separate the string
;; Returns: List of strings
(defun LM:str->lst ( str del / pos )
   (if (setq pos (vl-string-search del str))
       (cons (substr str 1 pos) (LM:str->lst (substr str (+ pos 1 (strlen del))) del))
       (list str)
   )
)

(defun HATLOT (lotnum col / HATOBJ FPTS PT1 TPT )
(SETQ OLDSNAP (GETVAR "OSMODE"))
(SETVAR "OSMODE" 0)
(setq lotfound (ssget "X" (LIST (CONS 0 "MTEXT")(CONS 1 lotnum)(CONS 8 "C-BLDG-NMBR"))))
(SETQ TPT (ASSOC 10 (ENTGET (ssname lotfound 0))))
(SETQ PT1 (LIST (NTH 1 TPT)(NTH 2 TPT)))
(SETQ FPTS (LIST (POLAR PT1 1.57 2 ) PT1)) ; 2 is a dummy value just past text hole
(SETQ HATOBJ (ENTGET (SSNAME (SSGET "f" FPTS '((0 . "HATCH"))) 0)))
(ENTMOD (subst col (assoc 8 HATOBJ) HATOBJ))
)
; this is where you would loop through the lots csv from excel number - color
; next version
(setq fopen (open (getstring "\nEnter file name") "R"))
(while (setq strline (read-line fopen))
(setq retstr (LM:str->lst strline ","))
(setq lotnum (nth 0 retstr)) ; read from file
(SETQ COL (nth 1 retstr)) ; read from file
(HATLOT lotnum col)
) ; end while

(setvar "osmode" oldsnap)
(princ)

mjm 发表于 2022-7-5 17:17:58

您好,BigAl谢谢您的输入,我该如何用cad和excelÉ实现这段代码
 
 
htnaks公司
页: [1] 2
查看完整版本: 进度报告-正在查找