AutoCAD Visual LISP / AutoLISP :: Extract Elevations Of Polylines
May 28, 2013
A quick lisp routine to extract the elevations of a selection set of 2d polylines? I have a massive "contour" file composed of 2d polylines with elevations. I need to find the min and max polyline elevation in selected areas. I can't figure out how to extract just the elevations of my selected polylines so I can quickly see the elevation values?
have a lisp routine that will ask you the starting elevation and the elevation interval, then allows you start selecting polylines and it assigns them new elevations based on your choices?
It seems years ago I had a routine that did this and it also changed the color of the polyline so you could tell which ones you had already changed, but I can't seem to find it now.
I've been looking to download a lisp that can trim (TR) and the (PE, join) polylines. two at a time or multiple... I've tried writing the lisp routine but I cannot do it correctly.. Any good lisp routine? Also, if there's one to trim & fillet w/a radius.. Hopefully there's two different routines but if there's one then even better...
Lisp (or a native way) to lengthen multiple polylines or lines at once to the same length by entering that length? I found the following lisp routine which extends a line an entered amount, but it has to be on a specific layer, and I want to enter the finished length, not how much to extend it.
(defun c:blen (/ lSet tmp doMode objLst actDoc) ;; *lDel global variable remembered during session (or *lDel (setq *lDel 2.0)) ; default value (princ " >>> Select lines to extend/reduce <<< ") (if (setq lSet [code].........
I need to be able to convert "polylines" (as opposed to "2d polylines") to 3d polylines. Here is the issue: the polylines that I want to convert have object data attached to them and they are at the proper Z elevation. When I use the "Convert 2d to 3d polyline" function, the conversion does take place, but all of my object data is removed from the object. And since one of my attributes reflects the overall elevation of the object (which all of the verticies will be the same elevation - even though it will be a 3d polyline), there are too many objects to individually update the attribute information when I am pressed for time.I am working in Civil 3d 2010. Any way to do this using Civil 3d?
I'm trying to set up a height label for sections and elevations. I then want to update it with a shortcut.
I already tried it with a field that shows me the y coordinates, but it won't show me the "+-"0.00 sign,when I put it to zero level. It only writes "0.00".
I need to wright a routine in autolisp that selects all 3Dpolylines with the same vertex Z value.Qselect as no transparent mode and filter doesn't work.
where I can obtain a freeware lisp routine that lists the lengths of all the polylines on a specific layer or within a selection set? I want to avoid list if possible as there are rather a lot of polylines!
I have a series of boxes or polygones that I would like the program to find the 1/2 distance and create two seperate polylines from the one object.
Example:
I have a square with pt1,pt2, pt3 and pt4 respectively. After I have ran the program it would create a diagonal from pt1 to pt3 and join the rest of the lines now to create the one polyline. Also it would do the same to create another exact polygonal shape for the other half. Thus creating two shapes of equal value from one.
Essentially, I'll be creating a sort of Venn diagram. So for the purposes of this exercise, let's assume it's the classic Venn diagram of three intersecting circles. But I need this to work with closed polylines, that may also have arc segments in them.
Anyway, so I have these intersecting areas, and I need to create bounding polylines for each area, and assess the number of overlaps. So, as in a Venn diagram, the areas where only one circle is present can then get shaded one color, areas where two circles are overlapping can get a different color, and the area where all three circles overlap can get a third color.
I'm clearly going to have to be converting the various boundaries to Regions, and performing some Unions. It seems I could grab all objects, convert them to Regions 2 at a time, and compare their Union'ed area to their individual area, to determine if they overlapped at all. With only the 3 cirlces, that would work, but when I have 35 individual polyline areas with arcs, suddenly this method feels like it will break down.
I work with polylines a lot to maintain Facility Space and I come across polylines that are overlapping. Is it possible to have a routine to find polylines that are overlapping? Sometimes I really have to zoom in pretty close to see if they are overlapping and sometimes it's pretty obvious.
I am trying to write a lisp file that extracts the LAYER, Z, X, Y, TEXT HEIGHT, POINT NUMBER, from the attached DXF file. Ultimately I will have the lisp insert a "POINT" at the X,Y,Z, cords, and then a "TEXT" entity at the same coordinates with the text height value and the point number string. Both entities need to be on the layer ending in "-PN". The layer name will change depending on the date. I have a third party program that creates the DXF file.
The point of the lisp file is to insert the point numbers and points into my drawing at their correct locations. For the life of me I can not make this work. I have attached the little bit of lisp I have, which unfortunately does not work properly because of it searching for the "TEXT" entry in the DXF file of which there are three per point number. I only need one. I have also attached the DXF file I have. maybe just an overall procedure that I can then code myself? I'm just not good at getting lisp to read a file and extract what I want from it.
I would like a lisp routine that can extract and export the x, y, z coordinates of all the points in a drawing into a text file so I can use the same in excel.
I've got a linetype that's part of our autocad template file and has been for so long that nobody around here even knows where the original line file is.
I need to extract the linetype out so that I can make some minor modifications. I did do a search and found a nifty lsp routine from Paul Turvill. (Here's the thread that pointed me there: [URL] ..........
I ran it and it SEEMED to work. All the linetypes in the file it created look good EXCEPT for the one I needed to extract. That one looks like this in the line file:
*TREELINE,Series of arcs used to indicate tree drip lines A,0.0001,-0.0001,
The linetype DOES display properly in the dwg file (meaning lines drawn using it look good).
I need to be able to grab all polylines and change global width at once. This is a repetitve task that i have created a button for. I am trying to use this but it is not working. It gets hung up on me wanting to manually select the polylines when i thought i grabbed them with the first line.
(ssget "X" '((8 . "LayerName"))) (command "PEDIT" "w" "9")
I need a function that allows to convert the polylines selected with a width globalize defined in a double closed line (spaced by the same width of the polyline), with a hatch inserted automatically defined.
Brilliant idea to draw raceways quickly: instead of making handmade double lines, connect, enter the hatches all by hand, you could quickly draw the polyline with width identical to the size of the duct, and then the lisp transform it into a duct more aesthetically pleasing if compared to the full polyline!
I have a inserted block with 4 tags for Length, Thickness, Elevation and Width.How can extract attributes tag values and draw a closed polyline + 2 internal lines, parallel to the block?
I'm dimensioning an old drawing with the real (measured) dimensions and with the drawing dimensions in brackets (using ' 1500 (<>)' to give '1500 (1505)' for example.
What I'd like is to also be able to put on the difference between the length I type in and the length in brackets - as this would let me see any really glaring errors that can't be attributed to user-error on the laser measure.So I could type in '1500 (<>) (X)' where X is the formula, and get ' 1500 (1505) (5)' back?
How to be able to run a script that could highlight any dimensions where the number is brackets and the typed number have a a difference of, say, 50.Or failing that, any way to extract all the dimension text at the end into excel so I can see the differences myself?
how to sensibly extract angular dimensions as attributes.
I can extract the attributes from a block containing angular dimensions, the attributes list angular dimensions as a field but don't actually list the number of degrees for the angular dimension.
It is the number of degrees that I am actually trying to obtain - but I cannot work out how to obtain the information
Is that possible to have a lisp to extract the Field Expression of a attribute in a block?Specifically, to extract the property VALUE (TextString) of this attribute.After to extract, I would like to put this text extracted in a different layout tab, in the same drawing. In this way, I will have a text linked to the attribute value between two layout tabs. So, when I have to change the attribute value, the text will be updated automatically.
I know that if I use the FIELD command to manually copy and paste this value it will work, but when I have a lot of attributes it becomes very laborious.
I design a small plant in Autocad 2012. For the pipes we used cylinders and boxes(for square pipe), now we need to make the bill of materials, but I don't know how to extract the data from each cylinder(radius and height) or box.
It is possible to do this?
I place a small sample from the plant. Totally I am having around 6000 elements.
I was wondering if it was the COND statement that I would need to use to evaluate a block to confirm that two attribute tags existed and if so, if would process the block to perform an attribute extraction of both of those tags. It would ignore blocks that only had one or the other attribute tags - and only extract the attribute values if the block had BOTH of the tags present - It could be blank, but it had to exist.
For example, I want to find blocks that have the attribute tag "PART_A" and "ID" - and then create a CDF that has the value of "PART_A" in the first column and "ID" in the second column. Then it closes my CDF file.
Then, I want it to scan my drawing again for blocks that contain attribute tag "PART_B" and "ID" and then re-open that CDF file and append the values so that the values of teh attribute "PART_B" is in the first column and the values of the tag "ID" are in the second column.
I have been playing with the following code --- is there anyway to modify the code to get it to do what I need? I have already removed the part that writes the header-row....