Archipack 2.7.0 for Blender 3.+ / 4.x RELEASE

Hi !
Looks like Thomas Schiex still fails to compile all dependencies and numpy is missing, please do report to him and in the meantime download from blender.org !

I downloaded the official blender.org, i’ts work now.

Hi,
made video about dev process since day 1.

6 Likes

Well Stephen, the beginning of your vid reminds me some EveOnline battles in 0.0 :stuck_out_tongue:

Stay aligned and fly safe!

#youfoundrazor, #-rzr- #decad #HANSZARK0V / #EveDowntime … hrhr …

(sorry, wasn’t able to resist :smile: )

Hi @stephen_leger

Are you planning on release some kind of spring sale for Archipack 2.0?

Cheers,
Pato.

Stephen, is there an easy or comfortable way to add some imperfections to walls, floors, etc automatically, e.g worn edges?

Would be a cool feature for future versions

Cheers, Peter

Hi,
I’m currently working on a fast Delauny triangulation implementation for terrain using scipy python module implementation, expect ~20x faster filtering and triangulation. Also looking at automatic setup for scipy, but extended tests still to be done to ensure it does work as expected on any platform.

Ifc exporter is also in good shape, still some issues with “breps” but basic entity and material export are working.

@ByteC The code rely on clean wall geometry to handle finishings (before openings / custom boolean) so current way to handle such things on walls is to use objects as “Custom holes” to cut out imperfections. Maybe could add some randomness for finishings ? Using a subdivide and some noise could do the trick.

4 Likes

I have been working on a Constrained Delaunay Triangulation (2d) C library for Blender; am close to there. It is almost done (working but some bugs to track down). I’m wondering what API would be useful for the Blender API for addon developers.

2 Likes

Hi Howardt !
You make my dreams come true !

Current delaunay based on Qgis pure python and scipy implementation :

if HAS_SCIPY:
                points_2D = np.array([[v.x, v.y] for v in verts])
                logger.debug("buildmesh() Triangulate using scipy %s points ..." % n_verts)
                # Triangulate
                tri = Delaunay(points_2D)
                faces = tri.simplices.tolist()
            else:
                try:
                    faces = computeDelaunayTriangulation(verts)
                except:
                    import traceback
                    traceback.print_exc()
                    return

I guess that contraints lines must be in vertices order, and other data in random order.
So a delaunay imputs might be
1 multi array for contraints (each one as sequence of ordered coords)
2 single array for random data for others.

Don’t know if you want to tackle over sampled datasets too, with a sampling algo, but might be better to handle this outside of delaunay itself.

In real-world data sets points are often over sampled, eg: altitude lines with 1m step in z axis and points every 0.5 degree leading in 1 cm space on xy plane between points.
In order to fix such bad sampled datasets, i’m using blender’s KDTree to filter points by distance.

Here are some scipy / pure python delaunay tri numbers :

Using a min dist of 1m on 1’578’367 points -> 30’651 points filtered
Filtering 1.37s
Triangulation without scipy 2.33s
Triangulation with scipy 0.2s

Using a min dist of 0.2m on 1’578’367 points -> 145’077 points filtered
Filtering 1.38s
Triangulation without scipy 21.36s
Triangulation with scipy 1.13s

Here is current filtering routine for over sampled data

            # Use a spatial tree to ensure items are uniques on xy plane
            # filter out oversampled data / down sample through min dist
            # Use blender's kd tree even 4x faster than scipy one
            n_verts = len(verts)
            tree = KDTree(n_verts)
            for i, v in enumerate(verts):
                tree.insert(v, i)
            tree.balance()

            found = set()
            keep = []
            for i, p in enumerate(verts):
                if i not in found:
                    for (co, index, dist) in tree.find_range(p, self.min_dist):
                        found.add(index)
                    keep.append(p)

            verts = keep
            n_verts = len(verts)
1 Like

Thanks.
I’m not sure I understand what your data looks like. It would be interesting to try my code on the data you tried (filtered would be easier for me, but I could run your code), so I could do a speed comparison.

Do I understand that you expect to have a set of polylines (set of connected vertices, open at each end – or maybe closed if you repeat the first vertex at the end), and a set of other isolated points? Do you want/expect a triangulation of the convex hull of all of that?

1 Like

Hello,
thanks for your work :slight_smile:
I just bought the addon today and I experience crashes when I try to draw walls. I have not been able to go further. I am not sure where I should ask for some help, so I come here :slight_smile:
I have the .crash.txt file esquisse_01.crash.txt (13.6 KB)
The Blender file contains only a png picture (reference plan).
All the best from France

Hi,
There are some stability issues on blender itself those last days, but was not able to make it crash under last one, so try to update your blender installation.

Hi,
sent dataset through PM.
Convex hull triangles most of the time are wrong,
but one can filter them using edges length in a post process so maybe you could keep them.
You may generate filtered input using generated terrain mesh points.

You were right, it seems to behave smoothly now. Sorry for the noise, I should have thought about the idea by myself.
Thanks a lot for your quick answer.

You’re working on an IFC exporter? Are you also planning on improving import options?

As you stated before archipack is primarly made for archviz in blender right? A big problem in blender are the limited import formats especially for archviz. I would love to see a real dwg importer that puts the dwg layers in collections, same for SketchUp files. I’m working in archviz and I receive all the time sketchup, dwg or revit files.

Any plans of adding better imports for cad data?

1 Like

Hi,
Yes i’m working on .ifc (IFC2x3) exporter.
Importing dwg / revit / archicad native files is not an option in open source environment for obvious license reasons.

So we must rely on dxf / obj import.
Made some small contribs in dxf import - lwpolylines altitudes and gradient angle based issues.

There is an addon to import .ifc (ifcOpenShell) wich is working quite well, however .ifc is not designed to share parameters, only geometry.
There is an effort put on IFC4x2 in this direction, but looks like adsk will wait for IFC6+ to start thinking about implementation of 4x2 … as usual…

1 Like

Hi,
Released archipack 2.0.7 today

This is a hotfix for breaking api changes in objects visibility with backward compatibility.

  • Fast terrain generation with optional support for scipy (up to 20x faster)
  • Fast floor / roof covering boundary / cutters
  • Better geometry and easy manipulation of “soft windows” on wall’s edges
  • bugfix in angle manipulators
  • bugfix in 2d export
  • bugfix in multi dimensions
  • bugfix curved windows rod
  • Spanish translation by Sara González
  • Rough experimental ifc exporter - still in alpha stage
  • bugfix in translation system for operators
  • Experimental python modules installer

Disable old version, save prefs, press “Remove” and restart blender, then setup as usual, don’t forget to setup the material library path and save your prefs.

Kind regards,

Stephen

2 Likes

Can’t you use SDK from other softs to make importers? It doesn’t have to be 100% opensource if you don’t distribute it with blender or am I missing something?

Like this old plugin that’s partially working for sketchup files https://blenderartists.org/t/sketchup-skp-importer/632085

You’re probably right, should be possible.

Take a look at dwg for sample, using ADSK RealDWG SDK for DWG and DXF file reading and writing.
License Fee: €5000 / year + 1400€ for support
This will require to build a python wrapper to make it standalone, then a python addon to talk with the wrapper, build for win / mac / linux and keep it working on the long run.

We could try to make it happen through crowd funding - with a 10k € / year target.

On the other hand, people exporting dwg are also able to export dxf / obj / ifc, so there are other path to achieve imports.

1 Like

Didn’t know it was so expensive to use the DWG sdk, like you said, maybe keep using the open dxf format is good as you can save it to that format from all software that can export to DWG. Does it translate layers from DXF files to collections? Would that be possible? Same for fbx files, import with layers would be awesome for archviz files.

Isn’t the sdk for sketchup free?

What would be awesome is an universal converter for blender, maybe a companion app to avoid issues with GPL, to convert from all different filetypes like skp, c4d, rhino, dxf, … to .blend.