AutoCAD Visual LISP / AutoLISP :: Get X / Y Coordinates Of A Pline
Feb 1, 2012Is there anyway to use LISP to list the x,y coordinates of a pline?
View 3 RepliesIs there anyway to use LISP to list the x,y coordinates of a pline?
View 3 RepliesI have LWPOLYLINEs that represent a cross section of a train tunnel. Each LWPOLYLINE lists its 2D points in an Object Coordinate System.My task is to create 3D Polylines in WorldCoordinateSystem using those LWPOLYLINEs.I have posted a drawing with sample objects.
I have attached a sample drawing. Drawing was created with Civil 3D 2013, but I exporttoautocadr12dxf'd it and then save to 2004 dwg so most should be able to open it.
I am looking for an AutoLISP routine, which gives all aligned dimensions of a closed polyline, drawn in 3d.
I have attached a 2D drawing for reference.
In continuation with thread All to Pline . I want to add one more function to this lisp i.e. Join all the objects selected.
Can this be done?
I tried this:
(command "_.pedit" "m" ename "" "j" ename "")or (command "_.pedit" "" "j" ename "" "")
But it gives me an error something like this:
Requires numeric distance, two points, or option keyword.
; error: Function cancelled
Enter fuzz distance or [Jointype] <0.000>: j
Enter join type [Extend/Add/Both] <Extend>: *Cancel*
or
Command: ch2pl
Select objects: Specify opposite corner: 5 found
Select objects:
*Invalid selection*
Expects a point or
Window/Last/Crossing/BOX/ALL/Fence/WPolygon/CPolygon/Multiple]:
; error: Function cancelled
Select polyline or [Multiple]:
Enter an option [Close/Join/Width/Edit vertex/Fit/Spline/Decurve/Ltype
gen/Reverse/Undo]: *Cancel*
Command: Specify opposite corner:
Command: *Cancel*
Is there a function to obtain the start angle and end angle of a pline, i know arcs do.
View 4 Replies View RelatedI have this code to make fillet to a polyline, but the command does not allow specify fillet radius. How I can change the routine?
(defun C:filletv ( / ent ) (setvar "FILLETRAD" 2.500) (if (setq ent (entsel "
Select element near vertex: ")) (command "_fillet" "_P" ent) ) (princ) )
I have been using one routine very successfully to create a pline in modelspace that has the outline of the chosen viewports in the drawing. This one works great.
Now I am trying add other routines that I've done to better fit my needs. If I use each routine individually at the command line they work, but when I use all in a single command I got the following errors:
The routine SetColor - does not change color to Bylayer The routine RectWidth - ; error: bad SSGET list
Why?
See the attached file for more details and be free to improve whatever you want in my routines because they are very basic.
And, if I am not asking to much, is that possible to not be prompt to select objects? I mean, the routine could automatically select all viewports in the drawing...
I have plines of circuits that sometimes have T's (line goes along, then T's out then back to T point and then continues).
Here is example line -
(setq List_Pline (list (list 0 0) (list 1 1) (list 0.5 1.5) (list 1 1) (list 2 2) (list 3 3) (list 3.5 2.5) (list 3 3) (list 4 4)))
nth 0 = (0 0)
nth 1 = (1 1) - T point
nth 2 = (0.5 1.5)
nth 3 = (1 1) - T return point
nth 4 = (2 2)
nth 5 = (3 3) - T point
nth 6 = (3.5 2.5)
nth 7 = (3 3) - T return point
nth 8 = (4 4)
I need to be able to pick 2 points along the line and find the shortest route.
Examples -
1st point at 1,1 and 2nd point at 3,3 - new line is nth's 3,4,5
1st point at 0,0 and 2nd point at 1,1 - new line is nth's 0,1
1st point at 2,2 and 2nd point at 3,3 - new line is nth's 4,5
1st point at 3,3 and 2nd point at 4,4 - new line is nth's 7,8
1st point at 0,0 and 2nd point at 3,3 - new line is nth's 0,1,2,3,4,5
1st point is 1,1 and 2nd point is 1,1 - new line is nth's 1,2,3
I've tried using vlax-curve-getParamAtPoint, but it returns 1st T point.
Synopsis of program -
Select Pline
Pick 1st point
check if on line
Pick 2nd point
check if on line
check if 2nd point is before 1st point, if so swap locations
find last nth of 1st point
find 1st nth of 2nd point
return list
I have been having a few 3dpline's with the last vertex being in a different layer. I saw a site mention that this is an AutoCAD 14 bug that could be caused if a program does not end the pline with the layer being set properly before doing a seqend command. If I move the entity to another layer and then back to the correct one it will fix it. Audit in R14 will not show any errors. If I export the file to AutoCAD 12 , audit will detect and fix the problem. I would like to find a Lisp, ARX, etc. that would check for this problem and fix, change color or layer, or whatever.
View 2 Replies View RelatedNow I have all block instances rounded into a 5mm-accuracy. How to also round in Line start and end points (and maybe even polyline vertices) into a 1mm (or custom) accuracy. There are hundreds of inaccurate line elements within the drawing .
View 4 Replies View RelatedHow to change the ltype in a PLINE drawn whith this
(defun c:cordaluminosa ()(if (tblsearch "LAYER" "Elétrico - Luminotécnico")(command "_.-layer" "_THAW" "Elétrico - Luminotécnico" "_ON" "Elétrico - Luminotécnico" "_SET" "Elétrico - Luminotécnico""")(command "_.-layer" "_MAKE" "Elétrico - Luminotécnico" "_COLOR" 3 "" ""))(command "._pline")(while (wcmatch (getvar "cmdnames") "*PLINE*")(command pause)))
I want to set the ltype FENCELINE1 to this object.
what I am attempting -
Pick a line
Pick a starting point on the line
Pick a ending point on the line
Pick side to offset
create list of offset points
Create a new line with a offset
I think I could do this using brute force, but would prefer a mathematical solution.
the resulting arc-fit pline has each pline segment converted into two arcs, the common radii of which are perpendicular to the original segment (unless direction of curverature changes)
the resulting arcs can be calculated given the angle of the tangents for each segment.
the factors for determining the tangents at vertex N are:
deflection angle at N
deflection angle at N+1 (90° or non-extant = not a factor, 0° or 180° = segment is the tangent)
deflection angle at N-1 (90° or non-extant = not a factor, 0° or 180° = segment is the tangent)
ratio of lengths of segments (N , N+1) and (N , N-1)
I can find the tangents when N±1 = 90° and when the segment lengths are equal but i can't figure out how to compute the tangent if these 3 factors are varied.
I don't want to use (command"._PEDIT" pl "_FIT""") because i need to collect the arc data anyway and at a high frame rate. The data will be used to further compute a spline frame that best fits a quadratic spline to the arcs. That part i know how to do!
I have a program that makes 3d polylines from various data. That 3d pline then gets added to a civil 3d surface as a breakline. I want to modify the pline with my program, but preserve the handle, as I think that is what C3D uses to decide if its part of the surface. I tried this as a sample with no luck:
;DELETE 3RD VERTEXT FROM 3D PLINE
(DEFUN C:T3 ( / EN ENAME ENT ENTL)
;GET 3D PLINE
(SETQ ENT (ENTSEL "
Select 3D Pline:")
[Code] .....
I know you can modify a vertex, but what about add and delete with entmake and entmod? I also considered using activex for this task, but you can only add verticies from what I could tell in the object browser of VBA, not delete them.
What I will be doing is deleting all the verticies and adding back the correct ones. Or if there was a way to transfer a handle to a new entity after deleting the old, that would suffice too.
I need to change the color of all lines/plines that intersect a given pline. How would I go about making the selection set of all lines that intersect that given pline.
View 8 Replies View RelatedThere are a ton of lisp to match text rotation to a selected line, but not vice versa.
View 9 Replies View RelatedI am looking for a method to export all the GPS coordinates which have been assigned to each point along with the properties of that point to an excel csv. In our drawings, there are multiple columns and each column has four points and each point has X,Y,Z coordinates. I want to export all this information to an excel sheet.
View 3 Replies View RelatedI want to get the minimum and maximum x, y coordinate values of selected lines. In other words, i want to find the top, bottom, left and right edges of a set of lines.
Is it possible to achieve this with a lisp code?
I have created a circle from 3topo points. Im having difficulty getting accurate elevation (z) of the center of circle (pile representation) via cad polyline listing. im getting same "z" all through out which in fact is not.
View 8 Replies View RelatedI need to draw a table with point number, easting, northing, elevation for a lot of points and need a lisp to read the xl spreadsheet and draw the table.
View 9 Replies View RelatedI'm writing function which will facilitate user to offset dimension. After enter command, he select dimension and select point near one of dimension's arrowheads. Then I'm calculating new XLinePoint1 or XLinePoint2 and replacing original.
I have everything done. I thought ... The problem is when user firstly create AlignedDimension and after that he create RotatedDimension by using continous function. After that XLinePoint1 and XLinePoint2 are not parallel to the DimLinePoint (look at image).
How can I get coordinates of points selected in red rectangles?
I know that one is specified as "dimension line defining point" but what about second? How can I get its coordinates? Or maybe there is other way to get this point?
I recently wrote a lisp routine that was supposed to get the 4 coordinates of a rectangle (LWPolyline). It worked fine in *MY* tests. But when someone else ran it, the routine operated as though the order of the points had been rearranged.
How can I get the points AND the order in which they belong?
Here's a sketch to show you what I mean. As part of my troubleshooting, I had a lisp routine draw a new pline using the points gathered by my first routine. The result of that on the left. On the right is the result of that when someone else runs the two routines.
Here's the code I used to get the points.
(defun getplinepointlist(ename)
(setq ent(entget ename))
(setq ptlist (list))
(while (setq pt(cdr(assoc 10 ent)))
[code].......
I am having nearly 1000 drawings where I need to change the title block in a new format.
I am stuck up in moving all the entities in cordinates 15,280 (upper point) and 205,55 (lower Point) to 275,294 (upper point and correspoing lower point.
Is it possible to obtain a list of coordinates for view ports (with dxf codes or otherwise) similar to obtaining a list of (assoc 10) for polylines?
I'm aware I can get the center, width and height from the dxf codes, but what about for clipped view ports with irregular shapes?
i have found the following lisp in a previous thread: (shows XY coordinates of the selected blocks)
(defun C:MyFunc (/ ss Index Ename Lst)
(while (or (not ss) (= 0 (sslength ss))) (setq ss (ssget '((0 .
"INSERT")))))
(if ss
[Code]....
I want this information to be added to the blocks as hidden attributes so that i can extract them by attout. The work to be done is : attout to excel, autofill an attribute (numbering) then attin.
but my problem is that i cant think of a way to number those blocks IN ORDER (ie top to bottom or left to right) unless by sorting them in excel first by their x or y coordinates
can do a routine that zooms into a coordinate, based on input. So for 1A, it would zoom into the coordinate for 1A.
1A = 1,1
1B = 1,2
1C = 1,3
1D = 1,4
I will try to attempt one shortly and will post it within 1 hour.
I have a 2 point LWPOLYLINE that has the following coordinates at its end point when I 'ID' the point.
Command: id
Specify point: end
of X = 709369.3214 Y = 7153039.9690 Z = 269.2143
However if I use..
(vlax-safearray->list (vlax-variant-value (vla-get-coordinates (vlax-ename->vla-object (car (entsel))))))
I get this
(-450567.0 269.288 -450570.0 269.214)
and if I 'dump' the object..
; Coordinates = (-450567.0 269.288 -450570.0 269.214)
; Document (RO) = #<VLA-OBJECT IAcadDocument 09855674>
; Elevation = 7.17399e+006
I don't have a clue where the '-450567.0' is coming from.
I'm in Model Space in 'World' UCS, and I'm confused.. why does the 'ID'd' value not reflect whats going on when I use the vla-get-coordinates approach.
There are many other LWPolylines within the same model that behave normally.
I've attached the drawing (I think!)
I have few co-ordinates in notepad like mentioned below. How can i create polyline using read-line function in auto lisp.
x y
0.0,0.0
2.0,0.0
2.0,1.0
0.0,1.0
2.0,0.0
4.0,0.0
4.0,1.0
2.0,1.0
I’m trying to create a view port, which covers my entire layout (white/ page area) using the following command
(command “mview” ‘(0 0 0) ‘(297.5 210 0))
However as you will note 0,0,0 is not the very edge corner of my layout (white area) and my white area is smaller then 297.5x 210mm (standard A4 landscape size)
How to obtain the exact measurements and starting coordinates to fully fill my entire layout page (white area)?
We have several AutoCAD drawings with hundreds of block references inserted with imprecise coordinates. Now we need to dimension all elements and need to correct these positions.
I am searching for a routine to round these positions up or down towards a 5mm precision so I don't have to manually move every single block element.
Is there any way to automate the task or do you know any workaround (like inserting the elements into a drawing with poorer unit precision settings)?
Would like to be able to select mtext explode it get x y coords of last line of text then turn it back to mtext and then launch mtext at a @0,-0.5 justification TL width 5 and display the ribbon.
All seems to work except the (command ...)
Below is my attempt.
(prompt "Select Note")
(setq ss (ssget))
(command "explode" ss)
(setq ss (ssget "l")) ;get last line of text
(setq ent (entget (ssname ss 0))
ent1 (cdr (assoc 10 ent))) ;get x y coords
(command "undo" "1") ;set exploded mtext back to mtext
(setvar "lastpoint" ent1)
(command "mtext" "@0,-0.4" "j" "TL" "w" "5")