Fracture Posted January 21, 2015 Share Posted January 21, 2015 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 if end 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# Quote Link to comment Share on other sites More sharing options...
BlackBox Posted January 21, 2015 Share Posted January 21, 2015 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 Quote Link to comment Share on other sites More sharing options...
Fracture Posted January 21, 2015 Author Share Posted January 21, 2015 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.cid case 4 dim QUOTE = ascii(34) dim extl = 0 dim exts = 0 dim exti = item.dim["Top Extension"].numvalue dim exto = item.dim["Bottom Extension"].numvalue dim tag1 = item.customdata[7].value dim rad = item.dim["Inner Radius"].numvalue dim tag2 = item.customdata[8].value dim tag3 = item.customdata[9].value if exti < exto then exts = exti extl = exto end if if exti > exto then exts = exto extl = exti end if exts = Round((exts), 2) extl = Round((extl), 2) rad = Round((rad), 2) item.customdata[7].value = rad + exts + ""+QUOTE+"" + "R" if extl > 2 then item.customdata[8].value = extl + ""+QUOTE+"" + "EXT" end if if exts > 2 then item.customdata[9].value = exts + ""+QUOTE+"" + "EXT" end if item.update() end select select item.cid case 61 dim QUOTE = ascii(34) item.customdata[7].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. Quote Link to comment Share on other sites More sharing options...
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.