Help Needed With LISP

Help Needed With LISP

My_Civil_3D
Advocate Advocate
349 Views
2 Replies
Message 1 of 3

Help Needed With LISP

My_Civil_3D
Advocate
Advocate

Hi Guys i am stuck with my lisp routine, the "yes no" works but when it comes to the next part when you select Yes the 

[Backfill/Excavation & Backfill/Rip & Recompact] does nothing, i might have missed something or my code is incorrect.

 

(defun c:TEST (/ oldLayer nlayer ncolor nlt inans ynans pt1 pt2 tx cml n1 n2 n3 n4 )

(setq oldLayer (getvar "clayer"))
(setq nlayer ".TEXT 2.5mm")
(setq ncolor "White")
(setq nlt "Continuous")
  
(if (tblsearch "Layer" nlayer)
	(progn
	(prompt "\n The Layer already Exists!")
	(princ))
	(progn
	(command "Layer" "m" nlayer "lt" nlt "" "c" ncolor "" "p" "p" "" "")
	(setvar "clayer" oldLayer)))
	
(setq inans (initget "Yes No"))
(setq ynans (getkword "\nDo you want to use pre-set options? [Yes/No] <No> "))	
	
(if (= ynans "No")
	(progn
(setq pt1 (getpoint "\n Select Arrow Head Point: "))
(setq pt2 (getpoint pt1 "\n Select Text Location: "))
(setq tx (getstring T "\n Please enter M-Leader Text: "))


(command "Mleader" pt1 pt2 tx)
(setq cml (entget(entlast)))
(setq cml (subst(cons 8 ".TEXT 2.5mm")(assoc 8 cml)cml))
(entmod cml)
(entupd(entlast))
(princ)))

(if (= ynans "Yes")
	(progn
	
	(setq ans (getkword "\nSelect pre-set text? [Backfill/Excavation & Backfill/Rip & Recompact] <Backfill> "))

		(if (= ans "Backfill")
		(progn
		(setq pt1 (getpoint "\n Select Arrow Head Point: "))
		(setq pt2 (getpoint pt1 "\n Select Text Location: ")) 
		(setq n1 (getstring "\nEnter Material Type: (G:) "))
		(setq n2 (getstring "\nEnter Compaction Percentage: (%) "))
		(setq n3 (getstring "\nEnter Layer Thickness: (mm) "))
		(setq tx (strcat "G" n1 " MATERIAL COMPACTED TO " n2 "%" " Mod. AASHTO IN LAYERS NOT EXCEEDING " n3 "mm" " THICKNESS."))

		
		(command "Mleader" pt1 pt2 tx)
		(setq cml (entget(entlast)))
		(setq cml (subst(cons 8 ".TEXT 2.5mm")(assoc 8 cml)cml))
		(entmod cml)
		(entupd(entlast))
		(princ)))
		
		(if (= ans "Excavation & Backfill")
		(progn
		(setq pt1 (getpoint "\n Select Arrow Head Point: "))
		(setq pt2 (getpoint pt1 "\n Select Text Location: ")) 
		(setq n1 (getstring "\nEnter Excavation Depth: (m) "))
		(setq n2 (getstring "\nEnter Material Type: (G:) "))
		(setq n3 (getstring "\nEnter Compaction Percentage: (%) "))
		(setq n4 (getstring "\nEnter Layer Thickness: (mm) "))
		(setq tx (strcat "EXCAVATE TO A MIN DEPTH OF " n1 "m" " & BACKFILL WITH " "G" n2 " MATERIAL COMPACTED TO " n3 "%" " Mod. AASHTO IN LAYERS NOT EXCEEDING " n4 "mm" " THICKNESS." ))
		
		(command "Mleader" pt1 pt2 tx)
		(setq cml (entget(entlast)))
		(setq cml (subst(cons 8 ".TEXT 2.5mm")(assoc 8 cml)cml))
		(entmod cml)
		(entupd(entlast))
		(princ)))
		
		(if (= ans "Rip & Recompact")
		(progn
		(setq pt1 (getpoint "\n Select Arrow Head Point: "))
		(setq pt2 (getpoint pt1 "\n Select Text Location: ")) 
		(setq n1 (getstring "\nEnter Rip & Recompact Thickness: (mm) "))
		(setq n2 (getstring "\nEnter Compaction Percentage: (%) "))
		(setq tx (strcat "RIP & RE-COMPACT "  n1 "mm" " IN-SITU MATERIAL TO " n2 "%" " Mod. AASHTO DENSITY."))
		
		(command "Mleader" pt1 pt2 tx)
		(setq cml (entget(entlast)))
		(setq cml (subst(cons 8 ".TEXT 2.5mm")(assoc 8 cml)cml))
		(entmod cml)
		(entupd(entlast))
		(princ)))))
)	
(princ)

	
	













 

Civil 3D Certified Professional
0 Likes
Accepted solutions (2)
350 Views
2 Replies
  • Lisp
Replies (2)
Message 2 of 3

komondormrex
Mentor
Mentor
Accepted solution

hi,

there missing (initget "Backfill Excavation&Backfill Rip&Recompact") right before line 36.

and you need to exclude spaces in key words.

 

0 Likes
Message 3 of 3

ВeekeeCZ
Consultant
Consultant
Accepted solution

Also need to take care about the <Backfill> enter option:

(if (or (not ans) (= ans "Backfill"))

0 Likes