CADChaser Posted January 23 Posted January 23 Hi everyone, I'm trying to make a Lisp routine to standardize layer properties in my drawings. I'm not very experienced with Lisp programming (though I've used AI to help), I've included my current code below. I'd be very grateful for any advice or suggestions you could offer. Thank you so much for your time! Here’s what I’m trying to do: The routine should go through all the layers in the drawing and match them to the layer standards based on layer names. If a layer name is similar to a standard name (e.g., E-EOP and !!EOP or anything with *EOP*), the routine should apply the standard properties (color, linetype, lineweight, etc.) to all similar layers. It should also dynamically load missing linetypes (if they aren’t already in the drawing) and log any missing linetypes at the end of the process. Importantly, the routine should only modify the properties of existing layers and not rename or delete anything. All Layer properties are listed in the code below, also attached Spreadsheet. attached image shows illustration of how before and after tool should works. (defun c:SetLayerProperties (/ *error* layer-name standards log-missing missing-linetypes linetype-map layer-props layer-name-matches apply-standards) ;; Error handler (defun *error* (msg) (if msg (princ (strcat "\nError: " msg))) (if (and missing-linetypes (/= (length missing-linetypes) 0)) (progn (princ "\n\nMissing Linetypes:") (mapcar '(lambda (x) (princ (strcat "\n- " x))) missing-linetypes) ) ) (princ "\nRoutine ended.") (princ) ) ;; Layer standards: (LayerName Color Linetype LineWeight Scale) (setq standards '( ("E-CENTERLINES" 253 "CENTER2" acLineWeight050 1.00) ("E-BUILDING" 253 "Continuous" acLineWeight050 1.00) ("E-CURB" 253 "Continuous" acLineWeight050 1.00) ("E-DITCH" 253 "DITCHLINE" acLineWeight018 0.75) ("E-DRAINAGE PIPE" 253 "Continuous" acLineWeight030 1.00) ("E-DRIVE WAY" 253 "Continuous" acLineWeight050 1.00) ("E-ELECTRIC" 253 "UNDER_ELEC" acLineWeight018 0.75) ("E-ELECTRIC STRUCTURE" 253 "UNDER_ELEC" acLineWeight050 1.00) ("E-EOP" 253 "Continuous" acLineWeight020 1.00) ("E-FENCE" 253 "Fence1" acLineWeight018 0.75) ("E-FIBER-OH" 253 "Overhead" acLineWeight018 0.75) ("E-FIBER-UG" 253 "UNDER_FIBER" acLineWeight018 0.75) ("E-GAS" 253 "UNDER_GAS" acLineWeight018 0.75) ("E-GUARDRAILS" 253 "GUARD_RAIL" acLineWeight002 0.20) ("E-GUTTER" 253 "Continuous" acLineWeight050 1.00) ("E-PARKING LOT" 250 "Continuous" acLineWeight050 1.00) ("E-PAVEMENT MARKINGS" 253 "Continuous" acLineWeight009 1.00) ("E-ROAD SIGN" 253 "Continuous" acLineWeight050 1.00) ("E-ROW" 8 "RIGHTOFWAY" acLineWeight035 0.70) ("E-ROW Lot line" 253 "PROPERTYLINE" acLineWeight030 0.70) ("E-ROW VDOT" 2 "RIGHTOFWAY" acLineWeight070 0.70) ("E-SANITARY-SEWER" 253 "UNDER_SAN" acLineWeight018 0.75) ("E-SIDEWALK" 253 "Continuous" acLineWeight050 1.00) ("E-STORM-SEWER" 253 "UNDER_STORMDRAIN" acLineWeight018 0.75) ("E-TACTILE PAVING" 253 "Continuous" acLineWeight050 1.00) ("E-TELEPHONE" 253 "UNDER_TELE" acLineWeight018 0.75) ("E-TELEPHONE GUY WIRE" 253 "Continuous" acLineWeight018 0.75) ("E-TRANS TRACKS" 253 "TRACKS" acLineWeight050 1.00) ("E-TREELINE" 253 "Continuous" acLineWeight050 1.00) ("E-UTILTY POLE" 250 "Continuous" acLineWeight050 1.00) ("E-WATER" 253 "UNDER_WATER" acLineWeight018 0.75) ("EX CONC DITCHES" 253 "EX. CONC. DITCH_LINE" acLineWeight018 0.75) ("LEGEND" 7 "Continuous" acLineWeight050 1.00) ("P-CONDUIT AERIAL" 10 "DASHED" acLineWeight007 0.20) ("P-CONDUIT UG" 10 "Continuous" acLineWeight070 1.00) ) ) ;; Initialize variables (setq missing-linetypes '()) (setq linetype-map (mapcar '(lambda (x) (list (car x) (nth 2 x))) standards)) ;; Load required linetypes, log missing (mapcar '(lambda (lt) (if (not (tblsearch "LTYPE" lt)) (progn (if (not (vl-catch-all-error-p (vl-catch-all-apply 'command (list "._linetype" "load" lt "")))) (princ (strcat "\nLoaded linetype: " lt)) (if (not (member lt missing-linetypes)) (setq missing-linetypes (cons lt missing-linetypes)))))) ) (mapcar 'caddr standards) ) ;; Apply standards to layers (vlax-for layer (vla-get-layers (vla-get-activedocument (vlax-get-acad-object))) (setq layer-name (vla-get-name layer)) (setq layer-props (car (vl-remove-if-not '(lambda (x) (wcmatch layer-name (car x))) standards))) (if layer-props (progn (vla-put-color layer (nth 1 layer-props)) (if (not (vl-catch-all-error-p (vl-catch-all-apply 'vla-put-linetype (list layer (nth 2 layer-props))))) (vla-put-linetype layer "Continuous") ) (vla-put-lineweight layer (nth 3 layer-props)) ) ) ) ;; Report missing linetypes (if missing-linetypes (progn (princ "\n\nMissing Linetypes:") (mapcar '(lambda (lt) (princ (strcat "\n- " lt))) missing-linetypes) ) ) (princ "\n\nRoutine completed successfully.") (princ) ) Standard layer Properties.xls 1 Quote
BIGAL Posted January 24 Posted January 24 This will read your excel just have it open before running. This way you only need to update the Excel and not your code. ;; Thanks to fixo ;; (defun getcell2 (row column / ) (setq cells (vlax-get-property (vlax-get-property myxl "ActiveSheet") "Cells")) (setq cell (vlax-get (vlax-variant-value (vlax-get-property cells "Item" row column)) 'value)) ) (setq myxl1 (vlax-get-object "Excel.Application")) (if (= myxl1 nil) (setq myxl (vlax-get-or-create-object "excel.Application")) (setq myxl myxl1) ) (vla-put-visible myXL :vlax-true) (vlax-put-property myxl 'ScreenUpdating :vlax-true) (vlax-put-property myXL 'DisplayAlerts :vlax-true) (setq standards '()) (setq row 2) (while (/= (setq t1 (getcell2 row 1)) nil) (setq t2 (getcell2 row 2)) (setq t3 (getcell2 row 3)) (setq t4 (getcell2 row 4)) (setq row (1+ row)) (setq standards (cons (list t1 t2 t3 t4) standards)) ) (if (not (vlax-object-released-p myXL))(progn(vlax-release-object myXL)(setq myXL nil))) Quote
CADChaser Posted January 26 Author Posted January 26 On 24/01/2025 at 20:25, GLAVCVS said: Have you tried it? Yes, i've tried my LISP but its not working showing error mentioned below. Command: SETLAYERPROPERTIES Error: lisp value has no coercion to VARIANT with this type: ACLINEWEIGHT020 Routine ended. Quote
CADChaser Posted January 26 Author Posted January 26 On 25/01/2025 at 04:51, BIGAL said: This will read your excel just have it open before running. This way you only need to update the Excel and not your code. ;; Thanks to fixo ;; (defun getcell2 (row column / ) (setq cells (vlax-get-property (vlax-get-property myxl "ActiveSheet") "Cells")) (setq cell (vlax-get (vlax-variant-value (vlax-get-property cells "Item" row column)) 'value)) ) (setq myxl1 (vlax-get-object "Excel.Application")) (if (= myxl1 nil) (setq myxl (vlax-get-or-create-object "excel.Application")) (setq myxl myxl1) ) (vla-put-visible myXL :vlax-true) (vlax-put-property myxl 'ScreenUpdating :vlax-true) (vlax-put-property myXL 'DisplayAlerts :vlax-true) (setq standards '()) (setq row 2) (while (/= (setq t1 (getcell2 row 1)) nil) (setq t2 (getcell2 row 2)) (setq t3 (getcell2 row 3)) (setq t4 (getcell2 row 4)) (setq row (1+ row)) (setq standards (cons (list t1 t2 t3 t4) standards)) ) (if (not (vlax-object-released-p myXL))(progn(vlax-release-object myXL)(setq myXL nil))) Hi Bigal, Thank you for your time and effort. I tried the provided code as instructed—loaded the LISP and opened the spreadsheet not in EXCEL other software, currently tested in ACAD 2013 if it matters - but it didn’t work as expected. I’m not sure why. Could you please check if everything is correct? If not, can we consider an alternative approach? I prefer this method as it helps standardize the spreadsheet for everyone’s use. Looking forward to your feedback. here is command log: setlayprop.lsp successfully loaded. Command: Command: GETSEL Initializing... Select an object on the Source layer <*>: Select an object of the Type you want <*>: Collecting all LINE objects on layer Ex Conc Ditches... 4 objects have been placed in the active selection set. Quote
GLAVCVS Posted January 26 Posted January 26 The code seems to work until it encounters the first typeline that it doesn't match and then it throws an error. Please attach the .lin file. Quote
CADChaser Posted January 26 Author Posted January 26 22 minutes ago, GLAVCVS said: Can you attach the linetype file to load? Here is linetype file for reference. STD Linetypes.lin Quote
GLAVCVS Posted January 26 Posted January 26 The line types DITCHLINE, UNDER_ELEC, etc... do not exist in the line types file Quote
GLAVCVS Posted January 26 Posted January 26 If the linetype names specified in the list, .csv or excel do not appear in the linetype file, the code will not work. 1 Quote
CADChaser Posted January 26 Author Posted January 26 25 minutes ago, GLAVCVS said: If the linetype names specified in the list, .csv or excel do not appear in the linetype file, the code will not work. Here's the drawing file with all line types. Since the tool requires these specific line types, most drawings should already have them. Thanks for your help! Could you please share the code? Test Drawing File2.dwg Quote
GLAVCVS Posted January 26 Posted January 26 In the 'Standard' list none of the symbols or variables 'acLineWeight###' contain any value. You should replace them with the corresponding numeric value. I assume that the numeric value at the end of 'acLineWeight' is the desired thickness. For example: 'acLineWeight002' means that the line should be 2 mm thick. Is this correct? Quote
GLAVCVS Posted January 26 Posted January 26 In any case, you should do some research to find out what values you can assign to 'lineweight'. Quote
BIGAL Posted January 26 Posted January 26 (edited) I had the excel open then ran the code, I saved the program as test.lsp. Got this when I did (princ standards) : !standards (("P-CONDUIT UG" 10.0 "Continuous" 0.7) ("P-CONDUIT AERIAL" 10.0 "DASHED" 0.7) ("LEGEND" 7.0 "Continuous" 0.0) ("EX CONC DITCHES" 253.0 "EX. CONC. DITCH_LINE" 0.0) ("E-WATER" 253.0 "UNDER_WATER" 0.0) ("E-UTILTY POLE" 250.0 "Continuous" 0.0) ("E-TREELINE" 253.0 "Continuous" 0.0) ("E-TRANS TRACKS" 253.0 "TRACKS" 0.0) ("E-TELEPHONE GUY WIRE" 253.0 "Continuous" 0.0) ("E-TELEPHONE" 253.0 Re linetypes as part code can check does linetype exist and i if not then load from correct .lin. This is example code for checking linetype exists. (defun loadLinetype (doc LineTypeName FileName) (if (and (not (existLinetype doc LineTypeName)) (vl-catch-all-error-p (vl-catch-all-apply 'vla-load (list (vla-get-Linetypes doc) LineTypeName FileName ) ) ) ) nil T ) ) (defun existLinetype (doc LineTypeName / item loaded) (vlax-for item (vla-get-linetypes doc) (if (= (strcase (vla-get-name item)) (strcase LineTypeName)) (setq loaded T) ) ) ) ;load missing linetypes ;;; returns: T if loaded else nil (loadLinetype doc "Fence" "custom.lin") (loadLinetype doc "Tree" "custom.lin") (loadLinetype doc "Water_main" "custom.lin") (loadLinetype doc "Gas_main" "custom.lin") (loadLinetype doc "Sewer_main" "custom.lin") (loadLinetype doc "Dashed" "custom.lin") (loadLinetype doc "Dashed2" "custom.lin") (loadLinetype doc "Center" "custom.lin") (loadLinetype doc "Batter" "custom.lin") (loadLinetype doc "Batterup" "custom.lin") (Alert "Line types loaded") Edited January 26 by BIGAL Quote
CADChaser Posted January 27 Author Posted January 27 please go through Spreadsheet i've attached below and this is the same file attached above with my query, hoping this Helps. Standard layer Properties.xls 17 hours ago, GLAVCVS said: In the 'Standard' list none of the symbols or variables 'acLineWeight###' contain any value. You should replace them with the corresponding numeric value. I assume that the numeric value at the end of 'acLineWeight' is the desired thickness. For example: 'acLineWeight002' means that the line should be 2 mm thick. Is this correct? Quote
CADChaser Posted January 27 Author Posted January 27 Bigal, i've tried using the lisp you shared above to check linetype in dwg, and command log shows like this. Select objects: ; error: bad argument value: AcDbCurve 42 15 hours ago, BIGAL said: I had the excel open then ran the code, I saved the program as test.lsp. Got this when I did (princ standards) : !standards (("P-CONDUIT UG" 10.0 "Continuous" 0.7) ("P-CONDUIT AERIAL" 10.0 "DASHED" 0.7) ("LEGEND" 7.0 "Continuous" 0.0) ("EX CONC DITCHES" 253.0 "EX. CONC. DITCH_LINE" 0.0) ("E-WATER" 253.0 "UNDER_WATER" 0.0) ("E-UTILTY POLE" 250.0 "Continuous" 0.0) ("E-TREELINE" 253.0 "Continuous" 0.0) ("E-TRANS TRACKS" 253.0 "TRACKS" 0.0) ("E-TELEPHONE GUY WIRE" 253.0 "Continuous" 0.0) ("E-TELEPHONE" 253.0 Re linetypes as part code can check does linetype exist and i if not then load from correct .lin. This is example code for checking linetype exists. (defun loadLinetype (doc LineTypeName FileName) (if (and (not (existLinetype doc LineTypeName)) (vl-catch-all-error-p (vl-catch-all-apply 'vla-load (list (vla-get-Linetypes doc) LineTypeName FileName ) ) ) ) nil T ) ) (defun existLinetype (doc LineTypeName / item loaded) (vlax-for item (vla-get-linetypes doc) (if (= (strcase (vla-get-name item)) (strcase LineTypeName)) (setq loaded T) ) ) ) ;load missing linetypes ;;; returns: T if loaded else nil (loadLinetype doc "Fence" "custom.lin") (loadLinetype doc "Tree" "custom.lin") (loadLinetype doc "Water_main" "custom.lin") (loadLinetype doc "Gas_main" "custom.lin") (loadLinetype doc "Sewer_main" "custom.lin") (loadLinetype doc "Dashed" "custom.lin") (loadLinetype doc "Dashed2" "custom.lin") (loadLinetype doc "Center" "custom.lin") (loadLinetype doc "Batter" "custom.lin") (loadLinetype doc "Batterup" "custom.lin") (Alert "Line types loaded") Quote
BIGAL Posted Thursday at 09:22 AM Posted Thursday at 09:22 AM I am on holidays back tomorrow will have a look at it 2 Quote
GLAVCVS Posted Thursday at 02:46 PM Posted Thursday at 02:46 PM Your code basically works. I don't have Office installed on this PC, so I can't give you a proven solution with Excel. But I can suggest an alternative using the 'Standard' list that appears in your code. I've modified it, replacing the values for 'LineWeight###' with the ones I've seen from my smartphone that appear in the Excel table. And that's all you need to do to make your code work. Also, you can add more layers to the list or modify the existing ones. One more thing: there are layers in the table that don't appear in the drawing. If you want me to create them in that case, you should add some more code. (defun c:SetLayerProperties (/ *error* layer-name standards log-missing missing-linetypes linetype-map layer-props layer-name-matches apply-standards ) ;; Error handler (defun *error* (msg) (if msg (princ (strcat "\nError: " msg)) ) (if (and missing-linetypes (/= (length missing-linetypes) 0)) (progn (princ "\n\nMissing Linetypes:") (mapcar '(lambda (x) (princ (strcat "\n- " x))) missing-linetypes ) ) ) (princ "\nRoutine ended.") (princ) ) ;; Layer standards: (LayerName Color Linetype LineWeight Scale) ;;; (setq standards ;;; '( ;;; ("E-CENTERLINES" 253 "CENTER2" acLineWeight050 1.00) ;;; ("E-BUILDING" 253 "Continuous" acLineWeight050 1.00) ;;; ("E-CURB" 253 "Continuous" acLineWeight050 1.00) ;;; ("E-DITCH" 253 "DITCHLINE" acLineWeight018 0.75) ;;; ("E-DRAINAGE PIPE" 253 "Continuous" acLineWeight030 1.00) ;;; ("E-DRIVE WAY" 253 "Continuous" acLineWeight050 1.00) ;;; ("E-ELECTRIC" 253 "UNDER_ELEC" acLineWeight018 0.75) ;;; ("E-ELECTRIC STRUCTURE" 253 "UNDER_ELEC" acLineWeight050 1.00) ;;; ("E-EOP" 253 "Continuous" acLineWeight020 1.00) ;;; ("E-FENCE" 253 "Fence1" acLineWeight018 0.75) ;;; ("E-FIBER-OH" 253 "Overhead" acLineWeight018 0.75) ;;; ("E-FIBER-UG" 253 "UNDER_FIBER" acLineWeight018 0.75) ;;; ("E-GAS" 253 "UNDER_GAS" acLineWeight018 0.75) ;;; ("E-GUARDRAILS" 253 "GUARD_RAIL" acLineWeight002 0.20) ;;; ("E-GUTTER" 253 "Continuous" acLineWeight050 1.00) ;;; ("E-PARKING LOT" 250 "Continuous" acLineWeight050 1.00) ;;; ("E-PAVEMENT MARKINGS" 253 "Continuous" acLineWeight009 1.00) ;;; ("E-ROAD SIGN" 253 "Continuous" acLineWeight050 1.00) ;;; ("E-ROW" 8 "RIGHTOFWAY" acLineWeight035 0.70) ;;; ("E-ROW Lot line" 253 "PROPERTYLINE" acLineWeight030 0.70) ;;; ("E-ROW VDOT" 2 "RIGHTOFWAY" acLineWeight070 0.70) ;;; ("E-SANITARY-SEWER" 253 "UNDER_SAN" acLineWeight018 0.75) ;;; ("E-SIDEWALK" 253 "Continuous" acLineWeight050 1.00) ;;; ("E-STORM-SEWER" 253 "UNDER_STORMDRAIN" acLineWeight018 0.75) ;;; ("E-TACTILE PAVING" 253 "Continuous" acLineWeight050 1.00) ;;; ("E-TELEPHONE" 253 "UNDER_TELE" acLineWeight018 0.75) ;;; ("E-TELEPHONE GUY WIRE" 253 "Continuous" acLineWeight018 0.75) ;;; ("E-TRANS TRACKS" 253 "TRACKS" acLineWeight050 1.00) ;;; ("E-TREELINE" 253 "Continuous" acLineWeight050 1.00) ;;; ("E-UTILTY POLE" 250 "Continuous" acLineWeight050 1.00) ;;; ("E-WATER" 253 "UNDER_WATER" acLineWeight018 0.75) ;;; ("EX CONC DITCHES" 253 ;;; "EX. CONC. DITCH_LINE" ;;; acLineWeight018 0.75 ;;; ) ;;; ("LEGEND" 7 "Continuous" acLineWeight050 1.00) ;;; ("P-CONDUIT AERIAL" 10 "DASHED" acLineWeight007 0.20) ;;; ("P-CONDUIT UG" 10 "Continuous" acLineWeight070 1.00) ;;; ) ;;; ) (setq standards '( ("E-CENTERLINES" 253 "CENTER2" 0 1.00) ("E-BUILDING" 253 "Continuous" 0 1.00) ("E-CURB" 253 "Continuous" 0 1.00) ("E-DITCH" 253 "DITCHLINE" 0 0.75) ("E-DRAINAGE PIPE" 253 "Continuous" 0.30 1.00) ("E-DRIVE WAY" 253 "Continuous" 0 1.00) ("E-ELECTRIC" 253 "UNDER_ELEC" 0 0.75) ("E-ELECTRIC STRUCTURE" 253 "UNDER_ELEC" 0 1.00) ("E-EOP" 253 "Continuous" 0.20 1.00) ("E-FENCE" 253 "Fence1" 0 0.75) ("E-FIBER-OH" 253 "Overhead" 0 0.75) ("E-FIBER-UG" 253 "UNDER_FIBER" 0 0.75) ("E-GAS" 253 "UNDER_GAS" 0 0.75) ("E-GUARDRAILS" 253 "GUARD_RAIL" 0 0.20) ("E-GUTTER" 253 "Continuous" 0 1.00) ("E-PARKING LOT" 250 "Continuous" 0 1.00) ("E-PAVEMENT MARKINGS" 253 "Continuous" 0.09 1.00) ("E-ROAD SIGN" 253 "Continuous" 0 1.00) ("E-ROW" 8 "RIGHTOFWAY" 0.35 0.70) ("E-ROW Lot line" 253 "PROPERTYLINE" 0.30 0.70) ("E-ROW VDOT" 2 "RIGHTOFWAY" 0.70 0.70) ("E-SANITARY-SEWER" 253 "UNDER_SAN" 0 0.75) ("E-SIDEWALK" 253 "Continuous" 0 1.00) ("E-STORM-SEWER" 253 "UNDER_STORMDRAIN" 0 0.75) ("E-TACTILE PAVING" 253 "Continuous" 0 1.00) ("E-TELEPHONE" 253 "UNDER_TELE" 0 0.75) ("E-TELEPHONE GUY WIRE" 253 "Continuous" 0 0.75) ("E-TRANS TRACKS" 253 "TRACKS" 0 1.00) ("E-TREELINE" 253 "Continuous" 0 1.00) ("E-UTILTY POLE" 250 "Continuous" 0 1.00) ("E-WATER" 253 "UNDER_WATER" 0 0.75) ("EX CONC DITCHES" 253 "EX. CONC. DITCH_LINE" 0 0.75) ("LEGEND" 7 "Continuous" 0 1.00) ("P-CONDUIT AERIAL" 10 "DASHED" 0.70 0.20) ("P-CONDUIT UG" 10 "Continuous" 0.70 1.00) ) ) ;; Initialize variables (setq missing-linetypes '()) (setq linetype-map (mapcar '(lambda (x) (list (car x) (nth 2 x))) standards ) ) ;; Load required linetypes, log missing (mapcar '(lambda (lt) (if (not (tblsearch "LTYPE" lt)) (progn (if (not (vl-catch-all-error-p (vl-catch-all-apply 'command (list "._linetype" "load" lt "") ) ) ) (princ (strcat "\nLoaded linetype: " lt)) (if (not (member lt missing-linetypes)) (setq missing-linetypes (cons lt missing-linetypes)) ) ) ) ) ) (mapcar 'caddr standards) ) ;; Apply standards to layers (vlax-for layer (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)) ) (setq layer-name (vla-get-name layer)) (setq layer-props (car (vl-remove-if-not '(lambda (x) (wcmatch layer-name (car x))) standards ) ) ) (if layer-props (progn (vla-put-color layer (nth 1 layer-props)) (if (not (vl-catch-all-error-p (vl-catch-all-apply 'vla-put-linetype (list layer (nth 2 layer-props)) ) ) ) (vla-put-linetype layer "Continuous") ) (vla-put-lineweight layer (nth 3 layer-props)) ) ) ) ;; Report missing linetypes (if missing-linetypes (progn (princ "\n\nMissing Linetypes:") (mapcar '(lambda (lt) (princ (strcat "\n- " lt))) missing-linetypes ) ) ) (princ "\n\nRoutine completed successfully.") (princ) ) 1 Quote
CADChaser Posted Saturday at 11:34 AM Author Posted Saturday at 11:34 AM @GLAVCVS Thanks for all your efforts. I’ve run the LISP code and noticed that some layer properties—color and lineweight—are not updating to the standard values as expected. As we discussed earlier, we need to enhance how the LISP code identifies layer names when applying property changes. Key Improvement Needed: For example, any layer name containing "water" (such as water, @water, !Water, or Water Structure) should all be recognized and standardized as E-WATER. The LISP code should include this pattern-matching functionality to group similar layers under a unified standard. I've attached before/after images showing the discrepancies. Implementing this pattern-matching feature should resolve most issues. VDOT ROW line color i’ve noticed that some line weights have not been updated to the standard values yet I'm so sorry if i made this thread so clumsy. Quote
GLAVCVS Posted Saturday at 04:09 PM Posted Saturday at 04:09 PM (edited) But: how do you know, from the 'standard' list, which is the base name of the layers with which to compare the existing ones in the drawing to decide which ones to modify? For example: in the 'standard' list there are several layer names that begin with 'E-' (E-CENTERLINES, for example) I understand that in these cases I must search for layers whose name matches or contains the string CENTERLINES, BUILDING, CURB....etc) But in the case of layer names that do not begin with 'E-': how do you decide which string to search for? There should be a unified standard for all other layer names in the 'standard' list. Edited Saturday at 04:16 PM by GLAVCVS Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.