我会后退几步,一步一步地思考,并为每个步骤分别创建一个程序作为defuns,这样你可以一次调试一件事。如果你的地块描述是一个图层上的文字,我会找到它并得到它的插入点,看看命令“布局”及其选项。忘记平移创建视口并使用缩放C点比例。你知道如何通过lisp与excel对话吗?如果不是GETEXEL。lsp会给你很多答案,同样地,只是从excel中读取某个单元格值开始,而不是直接将其放入代码中。从excel中填写属性,只需在此处搜索。
我知道我是根据1-2年前张贴在这里的excel批号列表给批号上色的。它使用excel来简化csv,同时让其他一切工作正常。
- (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
- ;(while read csv
- (setq lotnum (getstring "\nEnter lot number")) ; read from file
- (SETQ COL (cons 8 "60% complete")) ; dummy line for testing make value read from file
- (HATLOT lotnum perc)
- ; end while
- (setvar "osmode" oldsnap)
- (princ)
|