Jump to content

Complex Polyface Mesh to Solid


UserID

Recommended Posts

Hello everyone

I am using AutoCAD 14 in my company, and currently working on a project containing a complex blocks of buildings and walls.

some walls are complicated, and the customer provided only an AutoCAD drawing for the whole building in a polyface meshes. I need to convert the walls to 3d Solid entities so I can slice them and make through sections.

I saw there are a lot of threads speaking of the same here , but believe me, nothing worked with my case.

I put one of the walls right link to dwg here so you may see what I am facing.

p.s.: when I try to convert the big wall to a mesh or to solid using CONVTOSOLID command the computer got frozen and fatal error occurred!.

https://wetransfer.com/downloads/6f43c582453b03668c26e77ff31c266620170921141803/7fcef9c7b0a90ec7f82657c56b58eedd20170921141803/c20c67

Thank you in advance.

Regards

Link to comment
Share on other sites

I tried a couple of different ways but they both ended with the explanation "cannot be converted" or it failed to convert because it was not watertight. Maybe someone else will have better luck.

Link to comment
Share on other sites

A PFace mesh is a very odd duck. I believe converting it to a solid is an almost impossible task.

 

I can convert standard meshes into PFaces meshes. Not the other way around.

 

-David

Link to comment
Share on other sites

I converted it to a bunch of solids by first exploding the mesh to 3D faces then using the Thicken command followed by Convert-to-Solid. Unfortunately I could not union it into a single entity.

Link to comment
Share on other sites

I see. Thank you both.

Using Revit, a friend of mine succeeded to convert it to a bunch of surfaces.

I think that's a limit for this poor structure.

 

Wisam

Link to comment
Share on other sites

Amazingly I think yours can actually be done. :o

 

A very complex operation

 

Explode the PFACE MESH

Convert each 3DFACE into a general 3D mesh (39,000 +- ) see code below

Convert each mesh to a solid

Union all soilds

 

This is only possible because all points are coincidental and form a closed model

 

[b][color=BLACK]([/color][/b]defun c:3df2mesh [b][color=FUCHSIA]([/color][/b]/ ss i en ed p1 p2 p3 p4[b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]and [b][color=NAVY]([/color][/b]setq ss [b][color=MAROON]([/color][/b]ssget '[b][color=GREEN]([/color][/b][b][color=BLUE]([/color][/b]0 . [color=#2f4f4f]"3DFACE"[/color][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
      [b][color=NAVY]([/color][/b]setq i 0[b][color=NAVY])[/color][/b]
      [b][color=NAVY]([/color][/b]while [b][color=MAROON]([/color][/b]setq en [b][color=GREEN]([/color][/b]ssname ss i[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
             [b][color=MAROON]([/color][/b]princ [color=#2f4f4f]"\t\t\r"[/color][b][color=MAROON])[/color][/b]
             [b][color=MAROON]([/color][/b]prin1 en[b][color=MAROON])[/color][/b]
             [b][color=MAROON]([/color][/b]setq ed [b][color=GREEN]([/color][/b]entget en[b][color=GREEN])[/color][/b]
                   p1 [b][color=GREEN]([/color][/b]cdr [b][color=BLUE]([/color][/b]assoc 10 ed[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
                   p2 [b][color=GREEN]([/color][/b]cdr [b][color=BLUE]([/color][/b]assoc 11 ed[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
                   p3 [b][color=GREEN]([/color][/b]cdr [b][color=BLUE]([/color][/b]assoc 12 ed[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
                   p4 [b][color=GREEN]([/color][/b]cdr [b][color=BLUE]([/color][/b]assoc 13 ed[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
             [b][color=MAROON]([/color][/b]entmake [b][color=GREEN]([/color][/b]list [b][color=BLUE]([/color][/b]cons 0 [color=#2f4f4f]"POLYLINE"[/color][b][color=BLUE])[/color][/b]
                            [b][color=BLUE]([/color][/b]assoc 8 ed[b][color=BLUE])[/color][/b]
                            [b][color=BLUE]([/color][/b]cons 66 1[b][color=BLUE])[/color][/b]
                            [b][color=BLUE]([/color][/b]list 10 0 0 0[b][color=BLUE])[/color][/b]
                            [b][color=BLUE]([/color][/b]cons 70 16[b][color=BLUE])[/color][/b]
                            [b][color=BLUE]([/color][/b]cons 71 2[b][color=BLUE])[/color][/b]
                            [b][color=BLUE]([/color][/b]cons 72 2[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
             [b][color=MAROON]([/color][/b]entmake [b][color=GREEN]([/color][/b]list [b][color=BLUE]([/color][/b]cons 0 [color=#2f4f4f]"VERTEX"[/color][b][color=BLUE])[/color][/b][b][color=BLUE]([/color][/b]assoc 8 ed[b][color=BLUE])[/color][/b][b][color=BLUE]([/color][/b]cons 10 p1[b][color=BLUE])[/color][/b][b][color=BLUE]([/color][/b]cons 70 64[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
             [b][color=MAROON]([/color][/b]entmake [b][color=GREEN]([/color][/b]list [b][color=BLUE]([/color][/b]cons 0 [color=#2f4f4f]"VERTEX"[/color][b][color=BLUE])[/color][/b][b][color=BLUE]([/color][/b]assoc 8 ed[b][color=BLUE])[/color][/b][b][color=BLUE]([/color][/b]cons 10 p2[b][color=BLUE])[/color][/b][b][color=BLUE]([/color][/b]cons 70 64[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
             [b][color=MAROON]([/color][/b]entmake [b][color=GREEN]([/color][/b]list [b][color=BLUE]([/color][/b]cons 0 [color=#2f4f4f]"VERTEX"[/color][b][color=BLUE])[/color][/b][b][color=BLUE]([/color][/b]assoc 8 ed[b][color=BLUE])[/color][/b][b][color=BLUE]([/color][/b]cons 10 p4[b][color=BLUE])[/color][/b][b][color=BLUE]([/color][/b]cons 70 64[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
             [b][color=MAROON]([/color][/b]entmake [b][color=GREEN]([/color][/b]list [b][color=BLUE]([/color][/b]cons 0 [color=#2f4f4f]"VERTEX"[/color][b][color=BLUE])[/color][/b][b][color=BLUE]([/color][/b]assoc 8 ed[b][color=BLUE])[/color][/b][b][color=BLUE]([/color][/b]cons 10 p3[b][color=BLUE])[/color][/b][b][color=BLUE]([/color][/b]cons 70 64[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
             [b][color=MAROON]([/color][/b]entmake [b][color=GREEN]([/color][/b]list [b][color=BLUE]([/color][/b]cons 0 [color=#2f4f4f]"SEQEND"[/color][b][color=BLUE])[/color][/b][b][color=BLUE]([/color][/b]assoc 8 ed[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
             [b][color=MAROON]([/color][/b]setq i [b][color=GREEN]([/color][/b]1+ i[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]prin1[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]

 

-David

Link to comment
Share on other sites

Nice one David!

 

Theres a small addition that can be done - add an option to erase the source 3DFaces:

 

Add this inside the loop:

(setq sL (cons en sL))

 

Add this after the loop:

(and sL (= "Yes" (progn (initget "Yes No") (cond ( (getkword "\nErase source ? [Yes/No] <Yes>") ) ("Yes")))) (mapcar 'entdel sL))

 

Ofcourse don't forget to localise the "sL" variable.

 

Thats a handy feature for such kind of routines (I noted this from Lee's outline program).

Link to comment
Share on other sites

  • 1 year later...
On ‎9‎/‎22‎/‎2017 at 1:55 PM, David Bethel said:

Amazingly I think yours can actually be done. :o

 

A very complex operation

 

Explode the PFACE MESH

Convert each 3DFACE into a general 3D mesh (39,000 +- ) see code below

Convert each mesh to a solid

Union all soilds

 

This is only possible because all points are coincidental and form a closed model

 

 


[b][color=BLACK]([/color][/b]defun c:3df2mesh [b][color=FUCHSIA]([/color][/b]/ ss i en ed p1 p2 p3 p4[b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]and [b][color=NAVY]([/color][/b]setq ss [b][color=MAROON]([/color][/b]ssget '[b][color=GREEN]([/color][/b][b][color=BLUE]([/color][/b]0 . [color=#2f4f4f]"3DFACE"[/color][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
      [b][color=NAVY]([/color][/b]setq i 0[b][color=NAVY])[/color][/b]
      [b][color=NAVY]([/color][/b]while [b][color=MAROON]([/color][/b]setq en [b][color=GREEN]([/color][/b]ssname ss i[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
             [b][color=MAROON]([/color][/b]princ [color=#2f4f4f]"\t\t\r"[/color][b][color=MAROON])[/color][/b]
             [b][color=MAROON]([/color][/b]prin1 en[b][color=MAROON])[/color][/b]
             [b][color=MAROON]([/color][/b]setq ed [b][color=GREEN]([/color][/b]entget en[b][color=GREEN])[/color][/b]
                   p1 [b][color=GREEN]([/color][/b]cdr [b][color=BLUE]([/color][/b]assoc 10 ed[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
                   p2 [b][color=GREEN]([/color][/b]cdr [b][color=BLUE]([/color][/b]assoc 11 ed[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
                   p3 [b][color=GREEN]([/color][/b]cdr [b][color=BLUE]([/color][/b]assoc 12 ed[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
                   p4 [b][color=GREEN]([/color][/b]cdr [b][color=BLUE]([/color][/b]assoc 13 ed[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
             [b][color=MAROON]([/color][/b]entmake [b][color=GREEN]([/color][/b]list [b][color=BLUE]([/color][/b]cons 0 [color=#2f4f4f]"POLYLINE"[/color][b][color=BLUE])[/color][/b]
                            [b][color=BLUE]([/color][/b]assoc 8 ed[b][color=BLUE])[/color][/b]
                            [b][color=BLUE]([/color][/b]cons 66 1[b][color=BLUE])[/color][/b]
                            [b][color=BLUE]([/color][/b]list 10 0 0 0[b][color=BLUE])[/color][/b]
                            [b][color=BLUE]([/color][/b]cons 70 16[b][color=BLUE])[/color][/b]
                            [b][color=BLUE]([/color][/b]cons 71 2[b][color=BLUE])[/color][/b]
                            [b][color=BLUE]([/color][/b]cons 72 2[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
             [b][color=MAROON]([/color][/b]entmake [b][color=GREEN]([/color][/b]list [b][color=BLUE]([/color][/b]cons 0 [color=#2f4f4f]"VERTEX"[/color][b][color=BLUE])[/color][/b][b][color=BLUE]([/color][/b]assoc 8 ed[b][color=BLUE])[/color][/b][b][color=BLUE]([/color][/b]cons 10 p1[b][color=BLUE])[/color][/b][b][color=BLUE]([/color][/b]cons 70 64[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
             [b][color=MAROON]([/color][/b]entmake [b][color=GREEN]([/color][/b]list [b][color=BLUE]([/color][/b]cons 0 [color=#2f4f4f]"VERTEX"[/color][b][color=BLUE])[/color][/b][b][color=BLUE]([/color][/b]assoc 8 ed[b][color=BLUE])[/color][/b][b][color=BLUE]([/color][/b]cons 10 p2[b][color=BLUE])[/color][/b][b][color=BLUE]([/color][/b]cons 70 64[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
             [b][color=MAROON]([/color][/b]entmake [b][color=GREEN]([/color][/b]list [b][color=BLUE]([/color][/b]cons 0 [color=#2f4f4f]"VERTEX"[/color][b][color=BLUE])[/color][/b][b][color=BLUE]([/color][/b]assoc 8 ed[b][color=BLUE])[/color][/b][b][color=BLUE]([/color][/b]cons 10 p4[b][color=BLUE])[/color][/b][b][color=BLUE]([/color][/b]cons 70 64[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
             [b][color=MAROON]([/color][/b]entmake [b][color=GREEN]([/color][/b]list [b][color=BLUE]([/color][/b]cons 0 [color=#2f4f4f]"VERTEX"[/color][b][color=BLUE])[/color][/b][b][color=BLUE]([/color][/b]assoc 8 ed[b][color=BLUE])[/color][/b][b][color=BLUE]([/color][/b]cons 10 p3[b][color=BLUE])[/color][/b][b][color=BLUE]([/color][/b]cons 70 64[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
             [b][color=MAROON]([/color][/b]entmake [b][color=GREEN]([/color][/b]list [b][color=BLUE]([/color][/b]cons 0 [color=#2f4f4f]"SEQEND"[/color][b][color=BLUE])[/color][/b][b][color=BLUE]([/color][/b]assoc 8 ed[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
             [b][color=MAROON]([/color][/b]setq i [b][color=GREEN]([/color][/b]1+ i[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]prin1[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]
 

 

 

-David

 

Thank you again

@ David, why I have the code looking like mumbo-jumbo lines, am I missing something here?

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...