Quantcast
Viewing all articles
Browse latest Browse all 14319

Need to check if layer is in one of multiple lists

I am trying to write a piece of a program that gets the layers from a drawing, and checks each one against a list of layers. If the layer is not a member of any of the lists it asks the user which layer list to add it to. This is what I have so far, but every time I try to run it I get a bad argument error.

(setq layerspresent (vla-get-layers (vla-get-activedocument (vlax-get-acad-object))))
	(setq i 0)
      (repeat (vla-get-count layerspresent)
		(setq thislayer (vla-get-name (vla-item layerspresent i)))
		(cond
			(
				((progn
					(or
						(= nil (member thislayer 0list))
						(= nil (member thislayer detaillist))
						(= nil (member thislayer clearancelist))
						(= nil (member thislayer clearanceelist))
						(= nil (member thislayer doorsdrawerslist))
						(= nil (member thislayer hiddenlist))
						(= nil (member thislayer hiddenelist))
						(= nil (member thislayer deletelist))
					)
				));ifs
				((progn
					(initget "0 DEtail CLearance CLEarance-e DOOrs-and-Drawers HIdden HIddEn-E DELete")
					(setq userchoice (getkword "\nChange layer to which AQSL layer/delete layer? (0 DEtail CLearance CLEarance-e DOOrs-and-Drawers HIdden HIDdn-e DELete)"))
					(cond
						(
							(= userchoice "0")
							(progn (
							(setq f (open "C:\\filterlists\\0list.txt" "a"))
							(write-line (cadr thislayer) f)
							(close f)
							(cons 0list thislayer)
							))
						)
						(
							(= userchoice "DEtail")
							(progn (
							(setq f (open "C:\\filterlists\\detaillist.txt" "a"))
							(write-line (cadr thislayer) f)
							(close f)
							(cons detaillist thislayer)
							))
						)
						(
							(= userchoice "CLearance")
							(progn (
							(setq f (open "C:\\filterlists\\clearancelist.txt" "a"))
							(write-line (cadr thislayer) f)
							(close f)
							(cons clearancelist thislayer)
							))
						)
						(
							(= userchoice "CLEarance-e")
							(progn (
							(setq f (open "C:\\filterlists\\clearanceelist.txt" "a"))
							(write-line (cadr thislayer) f)
							(close f)
							(cons clearanceelist thislayer)
							))
						)
						(
							(= userchoice "DOOrs-and-Drawers")
							(progn (
							(setq f (open "C:\\filterlists\\doorsdrawerslist.txt" "a"))
							(write-line (cadr thislayer) f)
							(close f)
							(cons doorsdrawerslist thislayer)
							))
						)
						(
							(= userchoice "HIdden")
							(progn (
							(setq f (open "C:\\filterlists\\hiddenlist.txt" "a"))
							(write-line (cadr thislayer) f)
							(close f)
							(cons hiddenlist thislayer)
							))
						)
						(
							(= userchoice "HIDden-e")
							(progn (
							(setq f (open "C:\\filterlists\\hiddenelist.txt" "a"))
							(write-line (cadr thislayer) f)
							(close f)
							(cons hiddenelist thislayer)
							))
						)
						(
							(= userchoice "DELete")
							(progn (
							(setq f (open "C:\\filterlists\\deletelist.txt" "a"))
							(write-line (cadr thislayer) f)
							(close f)
							(cons deletelist thislayer)
							))
						)
					)
				));thens
			);1st if then
			(
				(princ)
			);alt if then
		);cond
		(setq i (+ i 1))
      );end loop

 Depending on the user's choice the layer gets written to an external file where the layer lists get their layers from in the beginning and then adds the layer to the relevant list to use later in the program.

 

If anyone has any insight that would be great.

 

Thank you.

Image may be NSFW.
Clik here to view.

Viewing all articles
Browse latest Browse all 14319

Trending Articles