Converting a graph to a 3D diagram

Converting a graph to a 3D diagram

Anonymous
Not applicable
910 Views
3 Replies
Message 1 of 4

Converting a graph to a 3D diagram

Anonymous
Not applicable

The following code (ref) can be used to generate a 2D diagram when coordinates, nodes, and edges of a graph are given.

(defun graph ( pts sls tls wgt )
( (lambda ( l )
(foreach x l (text (cdr x) (itoa (car x)) 0.0 1))
(mapcar
'(lambda ( a b c / p q r )
(setq p (cdr (assoc a l))
q (cdr (assoc b l))
r (angle p q)
)
(entmake (list '(0 . "LINE") (cons 10 p) (cons 11 q) '(62 . 8)))
(text
(mapcar '(lambda ( x y ) (/ (+ x y) 2.0)) p q)
(itoa c)
(if (and (< (* pi 0.5) r) (<= r (* pi 1.5))) (+ r pi) r)
2
)
)
sls tls wgt
)
)
(mapcar 'cons (vl-sort (append sls tls) '<) pts)
)
)
(defun text ( p s a c )
(entmake
(list
'(0 . "TEXT")
(cons 10 p)
(cons 11 p)
(cons 50 a)
(cons 01 s)
(cons 62 c)
'(40 . 2)
'(72 . 1)
'(73 . 2)
)
)
)


(graph
'((75 25) (115 45) (90 60) (10 5) (45 0) (45 55) (0 25))
'( 1 1 1 1 2 2 3 4 4 5 6)
'( 2 3 4 5 3 6 6 5 7 7 7)
'(50 10 20 80 90 90 30 20 100 40 60)
)


I'd like to ask for suggestions on how the above code has to be modified to draw 3D diagrams when 3D coordinates of nodes are available.

 

(graph
'((75 25 0) (115 45 24) (90 60 21) (10 5 4) (45 0 1) (45 55 23) (0 25 123))
'( 1 1 1 1 2 2 3 4 4 5 6)
'( 2 3 4 5 3 6 6 5 7 7 7)
'(50 10 20 80 90 90 30 20 100 40 60)
)
Reply
Reply
0 Likes
Accepted solutions (1)
911 Views
3 Replies
Replies (3)
Message 2 of 4

Anonymous
Not applicable

Solved.

Reply
Reply
0 Likes
Message 3 of 4

Sea-Haven
Mentor
Mentor

Should post how solved, was it over at Cadtutor.

Reply
Reply
Message 4 of 4

Anonymous
Not applicable
Accepted solution

cross-posted here

Reply
Reply
0 Likes