Hi all, I have created a model and tried to get the surface and line geometry of the walls in a space. However, when there is another wall added not within the space but connected to the wall, the surfaces split.
What I need is to get the lines of the entire wall.
From the diagram below, I have a space with 4 walls but with 5 different surfaces.
I have tried to get the line/curve geometry of all the walls but I kept receiving this error “Unable to create Line. Points are likely coincident”.
Any tips on pasting codes? I can’t seem to post my code properly. I’ve uploaded my python script below.
Is there a simpler method to acquire the geometry lines of a space though?
Thank you very much!
CombineLines.py (1.7 KB)
My code for creating new lines is as shown below.
#Get curves of similiar vectors with same start and end pt
for curve_1 in allcrvs:
curvestartpt_1 = curve_1.StartPoint
curveendpt_1 = curve_1.EndPoint
curvevec_1 = Vector.ByTwoPoints(curvestartpt_1, curveendpt_1)
for curve_2 in allcrvs:
curvestartpt_2 = curve_2.StartPoint
curveendpt_2 = curve_2.EndPoint
curvevec_2 = Vector.ByTwoPoints(curvestartpt_2, curveendpt_2)
curvevec_2_opp = Vector.ByTwoPoints(curveendpt_2, curvestartpt_2)
if curve_1 == curve_2: continue if (curvestartpt_1 == curvestartpt_2 or curvestartpt_1 == curveendpt_2 or curveendpt_1 == curvestartpt_2 or curveendpt_1 == curveendpt_2) and (curvevec_1 == curvevec_2 or curvevec_1 == curvevec_2_opp): if curvestartpt_1 == curvestartpt_2: newstartpt = curveendpt_1 newendpt = curveendpt_2 elif curvestartpt_1 == curveendpt_2: newstartpt = curveendpt_1 newendpt = curvestartpt_2 elif curveendpt_1 == curveendpt_2: newstartpt = curvestartpt_1 newendpt = curvestartpt_2 elif curveendpt_1 == curvestartpt_2: newstartpt = curvestartpt_1 newendpt = curveendpt_2 else: pass newcrv = Line.ByStartPointEndPoint(newstartpt, newendpt) combcrv.append(newcrv) counter += 1
#Combine the curves
for combcurve in combcrv:
combcurvestpt = combcurve.StartPoint
combcurveendpt = combcurve.EndPoint
combcurvevec = Vector.ByTwoPoints(combcurvestpt, combcurveendpt)
combcurve_Z = combcurve.Point.Z
for curve in crv:
curvestpt = curve.StartPoint
curveendpt = curve.EndPoint
curvevec = Vector.ByTwoPoints(curvestpt, curveendpt)
curvevec_opp = Vector.ByTwoPoints(curveendpt, curvestpt)
curve_Z = curve.Point.Z
if (combcurvevec == curvevec or combcurvevec == curvevec_opp) and combcurve_Z ==curve_Z: