Lisp to select cid#
Hi, I am working in Fabrication and am trying to make a lisp that will select all items of a certain cid# (4 and 61) and then run a ctext on them. The lisp is also supposed to run a script at the same time, but that part works fine.This is my code so far...
(defun c:etag()(setq ss (ssget))(setvar "pickfirst" 1)(sssetfirst nil ss)(executescript "Elbow Tagger.cod")if item.cid = 4, 61 then(addctext "AMCI-Full-Elbow-Tag")end ifend select)
Currently, this lisp will apply the ctext to very part selected. I am only familiar with VB so I was a little lost when trying to tell the lisp to select cid# Welcome to CADTutor.
More information is needed; the code you posted includes some sub-functions which aren't defined, and perhaps a sample drawing so others might be able to test their offerings?
If you post what you're after in VB, C#, etc. I may be able to help port that down to LISP... Presuming, of course, that the appropriate Properties, and Methods are exposed to LISP (not sure what AMEP Command you're calling in your Script either).
Cheers I'm not sure what you mean by a sample drawing but I can definitely elaborate on the sub functions.
"Elbow Tagger.COD" is a script I made in visual basic language to fill in the tag-1, tag-2 and tag-3 fields of sheet metal elbows. I will include its code in the box bellow...
select item.cidcase 4dim QUOTE = ascii(34)dim extl = 0dim exts = 0dim exti = item.dim["Top Extension"].numvaluedim exto = item.dim["Bottom Extension"].numvaluedim tag1 = item.customdata.valuedim rad = item.dim["Inner Radius"].numvaluedim tag2 = item.customdata.valuedim tag3 = item.customdata.valueif exti < exto thenexts = extiextl = extoend ifif exti > exto thenexts = extoextl = extiend ifexts = Round((exts), 2)extl = Round((extl), 2)rad = Round((rad), 2)item.customdata.value = rad + exts + ""+QUOTE+"" + "R"if extl > 2 thenitem.customdata.value = extl + ""+QUOTE+"" + "EXT"end ifif exts > 2 thenitem.customdata.value = exts + ""+QUOTE+"" + "EXT"end ifitem.update() end selectselect item.cidcase 61dim QUOTE = ascii(34)item.customdata.value = item.dim["Inner Radius"].numvalue + ""+QUOTE+"" +"R"item.update()end select
That part works just fine, but the next bit has been giving me trouble.
"AMCI-Full-Elbow-Tag" is a ctext I made which creates a tag with 4 fields. 1 field is for the angle of the elbow and the other 3 fields are for the tag-1, tag-2, and tag-3 fields which the "Elbow Tagger.COD" script fills in.
I only want the ctext to apply to items which have a cid identification number of 4 and/or 61 but at present, it effects everything I drag select.
I would of loved to do this whole thing in a VB script but people have been telling me that scripts cannot load ctext reports so I am trying to load both my script and my ctext from a lisp.
I suppose, if the ctext portion of the lisp were to be in VB, it would probably look something like this....but I am not an experienced programmer so I could be way off.
select item.cid case 4, 61 addctext "AMCI-Full-Elbow-Tag"end select
Thanks a lot for offering to help and being so friendly. Some people can be snarky when I ask a beginner question.
页:
[1]