TheSwamp
Code Red => AutoLISP (Vanilla / Visual) => Topic started by: PM on June 06, 2021, 11:48:30 AM
Title:
draw line from 1 point to a list of points
Post by:
PM
on
June 06, 2021, 11:48:30 AM
Hi.I have this lisp code to draw lines between points. I want to update this code to draw lines from one point to a list of others.
for example
1)give the first point -->s1
2)give a list of mumbers --> 1- 4
or give a txt file with a list of points like the attach file
The solution with the txt file must be better
Code - Auto/Visual Lisp:
[Select]
(
defun
c:lineat
(
/
data AllPointnumber stop pts data i p pv pts_
)
(
vl-load-com
)
(
setq
ped
(
getvar
'peditaccept
)
)
(
setvar
'peditaccept
1
)
(
if
(
setq
AllPointnumber
nil
stop
nil
pts
nil
data
(
ssget
"_X"
(
list
'
(
0
.
"INSERT"
)
'
(
66
.
1
)
'
(
2
.
"Point,KORYFES,station,trigonom,KOKAEK,KOROT,AnnotPoint,AnnotKORYFES,Annotstation,Annottrigonom,AnnotKOKAEK,AnnotKOROT"
)
(
cons
410
(
getvar
'Ctab
)
)
)
)
)
(
progn
(
repeat
(
setq
i
(
sslength
data
)
)
(
if
(
setq
p
(
vl-some
'
(
lambda
(
x
)
(
if
(
eq
(
vla-get-tagstring
x
)
"POINT"
)
(
list
(
vla-get-textstring
x
)
(
vlax-get
e 'Insertionpoint
)
)
)
)
(
vlax-invoke
(
setq
e
(
vlax
-
ename
->
vla-object
(
ssname
data
(
setq
i
(
1-
i
)
)
)
)
)
'GetAttributes
)
)
)
(
setq
AllPointnumber
(
cons
p AllPointnumber
)
)
)
)
(
setq
2bjoin
(
ssadd
)
)
(
while
(
null
Stop
)
(
setq
pv
(
getstring
"
\n
Give the Point number <Enter to exit>: "
)
)
(
cond
(
(
setq
a
(
assoc
(
strcase
pv
)
AllPointnumber
)
)
(
setq
pts
(
cons
(
cadr
a
)
pts
)
pts_
(
cons
(
cadr
a
)
pts_
)
)
(
if
(
=
(
length
pts
)
2
)
(
progn
(
entmakex
(
list
(
cons
0
"LINE"
)
(
cons
10
(
car
pts
)
)
(
cons
11
(
cadr
pts
)
)
)
)
(
setq
pts
(
list
(
car
pts
)
)
)
(
ssadd
(
entlast
)
2bjoin
)
)
)
)
(
(
eq
pv
""
)
(
setq
stop
"Done"
)
)
(
(
eq
(
strcase
pv
)
"U"
)
(
entdel
(
setq
del
(
ssname
2bjoin
(
1-
(
sslength
2bjoin
)
)
)
)
)
(
ssdel
del 2bjoin
)
(
setq
pts_
(
cdr
pts_
)
pts
(
list
(
car
pts_
)
)
)
)
(
(
null
a
)
(
princ
"
\n
<<Point value not found>>"
)
)
)
)
(
initget
"Yes No"
)
(
setq
convert
(
cond
(
(
getkword
"
\n
Convert to polylines? [Yes/No] <N>: "
)
)
(
"No"
)
)
)
(
if
(
eq
"Yes"
convert
)
(
command
"_.pedit"
"_M"
2bjoin
""
"_J"
""
""
)
)
)
)
(
setvar
'peditaccept ped
)
(
princ
)
)
Thanks
Title:
Re: draw line from 1 point to a list of points
Post by:
PM
on
June 06, 2021, 02:57:15 PM
Any options?
Thanks
Title:
Re: draw line from 1 point to a list of points
Post by:
PM
on
June 06, 2021, 06:06:39 PM
i FIX IT
Code - Auto/Visual Lisp:
[Select]
(
defun
c:Test
(
/
sel obj lst pts bas
)
(
princ
"
\n
Select point objects :"
)
(
if
(
setq
sel
(
ssget
"_:L"
'
(
(
0
.
"INSERT"
)
)
)
)
(
while
(
setq
obj
(
ssname
sel
0
)
)
(
setq
lst
(
cons
(
cdr
(
assoc
10
(
entget
obj
)
)
)
lst
)
pts
(
cons
obj pts
)
)
(
ssdel
obj sel
)
)
)
(
and
lst
(
setq
bas
(
getpoint
"
\n
Specify base Point :"
)
)
(
foreach
p lst
(
entmake
(
list
'
(
0
.
"LINE"
)
(
cons
10
bas
)
(
cons
11
p
)
)
)
)
)
(
princ
)
)