3dface's Z coord becomes zero..

3dface's Z coord becomes zero..

Anonymous
Not applicable
783 Views
3 Replies
Message 1 of 4

3dface's Z coord becomes zero..

Anonymous
Not applicable

Hello, I've been trying to make 3dface in this way in AutoCAD 2021 version.

 

(defun c:MyTest()
  (setq p0 (list 168783.0 242367.0 1000.0))
  (setq p1 (list 154752.0 264514.0 750.0))
  (setq p2 (list 133763.0 247150.0 500.0))
  (command "3dface" p0 p1 p2 "" "")
)

 

However, when I run MyTest I found some vertices' Z coordinate become zero.

3dface_info.jpg3dface_info2.jpg

 

The picture shows that 3rd point's Z coordinate becomes zero.

It is very weird to me... 😞

I've been stuck in this issue for a week.. please help me.

 

Thanks in advance!

0 Likes
Accepted solutions (1)
784 Views
3 Replies
Replies (3)
Message 2 of 4

pbejse
Mentor
Mentor
Accepted solution

Switch Object snap off [ F3 ] 

or 

(defun c:MyTest()
  (setq p0 (list 168783.0 242367.0 1000.0))
  (setq p1 (list 154752.0 264514.0 750.0))
  (setq p2 (list 133763.0 247150.0 500.0))
  (command "3dface" "_non"
	   p0 "_non" p1 "_non" p2 "" "")
)

or

(defun c:MyTest()
  (setq osm (getvar 'osmode))
  (setvar 'osmode 0)
  (setq p0 (list 168783.0 242367.0 1000.0))
  (setq p1 (list 154752.0 264514.0 750.0))
  (setq p2 (list 133763.0 247150.0 500.0))
  (command "3dface" p0  p1  p2 "" "")
  (setvar 'osmode osm)
  (princ)
)

HTH

 

Message 3 of 4

Anonymous
Not applicable

Thank you so much! It works very well. I have one more question.

 

Is it possible to add texture to 3dface also? If possible, I want to give different colors to 3dfaces of each layers.

0 Likes
Message 4 of 4

pbejse
Mentor
Mentor

@Anonymous wrote:

Thank you so much! It works very well. I have one more question.

 

Is it possible to add texture to 3dface also? If possible, I want to give different colors to 3dfaces of each layers.


 

Yes you can, You need to retrieve list of materials on your current drawing.

 

(setq matl (vla-get-materials (vla-get-activedocument (vlax-get-acad-object))))
(vlax-for itm matl
     (setq allmaterial (cons (vla-get-name itm) allmaterial))
   )

 

assign material to newly created 3Dface

(Vla-put-material vlaobj materialname)

HTH

 

0 Likes