Jump to content

From dtext to a z-position


Veryname

Recommended Posts

Greetings,

 

I am designing a road for my final school project and I just received a height map. The problem is, is that the heights are dtext's and I need to create points with the height written in the texts. I would add them manually but there are about 30.000 texts so that's not a realistic option.

 

So my question is; is there a way to automatically create points at the origin of the dtexts, where the z-value of the points comes from the texts-content and the x and y-value comes from text's geometry?

 

Some extra info:

- The origins of the texts are 5 units apart in both x and y-directions.

- I'm using AutoCAD 2008.

 

Thanks a lot.

Link to comment
Share on other sites

The quick answer is yes, this could be done using Lisp.

 

The slow answer is that you would have to get the attention of someone who could write this Lisp - possibly post a thread in that section of the Forum :)

Link to comment
Share on other sites

Eldon's right, at least I think he's right, you'll probably need a lisp to get this done - so I moved your thread to the Lisp-part of the forum in the hopes you'll get faster help here :)

Link to comment
Share on other sites

Thanks for the replies.

 

If it's that much work I'll use the macro I created, I don't want to put someone else through that much trouble. It took me three hours to make the macro and it takes 2 second per text but I'll just have to let it run all night :) I was just hoping there was some secret command/function I wasn't aware of to speed things up incase I have to do this again in the future.

 

PS, if someone wants to make it I wont object :P

Link to comment
Share on other sites

A LISP for this shouldn't be too hard - one question - does the text items only contain the z-value and no other text? Also, are we talking only DTEXT, or MTEXT also?

 

Also - I can create a LISP in which the user will select the text manually - (using a selection set). - or, if all the heights are on the same layer, or if they are the only text (or DTEXT) in the drawing, then I can set the LISP to automatically do the selecting for you. -- For this to happen the text needs some "defining" factor, so a filter list can be created. - i.e. on own layer, or the only DTEXT, or have their own colour etc etc.

Link to comment
Share on other sites

Also, what layer do you want these "Points" to be on? - and I assume they are just standard ACAD Points.

 

So, if I am correct, you want to use the base points of the text for the x,y and the contents of the text for the z?

 

Thanks

 

Lee

Link to comment
Share on other sites

To answer your question:

  • Yes, the text only contains the height value, e.g.: "129.30"
  • All off them are dtext, no mtexts.
  • The file only contains the texts and they are all the same layer/color. The layer is "49" and the color is "12", which is a redish color.

  • The points can be on any layer, I'll just move them if need be.
  • They are just regular AutoCAD points.
  • "You want to use the base points of the text for the x,y and the contents of the text for the z?"

Thanks for the help :)

Link to comment
Share on other sites

OK, try this:

 

(defun c:zht (/ varlist oldvars ss eLst bPt zVal nbPt ptLst)
 (vl-load-com)
 (setq varlist (list "CMDECHO" "OSMODE")
   oldvars (mapcar 'getvar varlist))
 (mapcar 'setvar varlist (list 0 0))
 (if (setq ss (ssget "X" '((0 . "TEXT")(8 . "49")(62 . "12"))))
   (progn
     (setq eLst (vl-remove-if 'listp
          (mapcar 'cadr (ssnamex ss))))
     (foreach e eLst
   (setq bPt (cdr (assoc 10 (entget e)))
         zVal (atof (cdr (assoc 1 (entget e))))
         nbPt (subst zVal (last bPt) bPt)
         ptLst (cons nbPt ptLst)))
     (foreach pt ptLst
   (command "_point" pt)))
   (princ "\n<!> No Text Found <!>"))
 (mapcar 'setvar varlist oldvars)
 (princ))

Link to comment
Share on other sites

Lee Mac, you are a gentleman and a scholar. Thank you for responding.:thumbsup:

 

No Probs Eldon, and thank you for your compliments.

 

How I look at it, the LISP wasn't a hard one to write, but if it helps someone save a few hours, I'm happy to spend a few minutes working on it. :thumbsup:

Link to comment
Share on other sites

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...