Message 1 of 4
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
I'm playing with an add-on script to make a sketch of a 2020 extrusion.
I've refactored the code to have a function to draw one quadrant. It is called four times. The quadrants are in clockwise order NE
def makeQuadrant(quadrant,
sketchLines, sketchArcs, sketchGeometryConstraints,
xSign, ySign):
elements = dict()
lines = []
posArray = [0,1,2,3,4,5]
xArray = [0, .225, .55, .55, .31, .31, .85]
yArray = [.31, .31, .635, .85, .85, 1.0, 1.0]
firstPoint = adsk.core.Point3D.create(xSign * xArray[1], ySign * yArray[1])
elements["first_point"] = firstPoint
lastPoint = adsk.core.Point3D.create(xSign * yArray[1], ySign * xArray[1])
elements["last_point"] = lastPoint
for i in posArray:
startPoint = adsk.core.Point3D.create(xSign * xArray[i], ySign * yArray[i])
endPoint = adsk.core.Point3D.create(xSign * xArray[i+1], ySign * yArray[i+1])
if i > 0 & i < 5:
lines.append(sketchLines.addByTwoPoints(startPoint, endPoint))
elements["arcStart"] = adsk.core.Point3D.create(xSign * 0.85, ySign * 1, 0)
elements["arcCenter"] = adsk.core.Point3D.create(xSign * 0.85, ySign * 0.85, 0)
elements["arc"] = sketchArcs.addByCenterStartSweep(elements["arcCenter"], elements["arcStart"], xSign * ySign * -1.578 )
for i in posArray:
startPoint = adsk.core.Point3D.create(xSign * yArray[i], ySign * xArray[i])
endPoint = adsk.core.Point3D.create(xSign * yArray[i+1], ySign * xArray[i+1])
if i > 0 & i < 5:
lines.append(sketchLines.addByTwoPoints(startPoint, endPoint))
i = 1
lines[i].isConstruction = True
adsk.core.Application.log("{},{},{},{},{},{} isValid {}, isVisible {}, isConstruction {}".format(
quadrant,
i,
lines[i].startSketchPoint.geometry.x,
lines[i].startSketchPoint.geometry.y,
lines[i].endSketchPoint.geometry.x,
lines[i].endSketchPoint.geometry.y,
lines[i].isValid,
lines[i].isVisible,
lines[i].isConstruction
))
elements["lines"] = lines
return elements
The code at the end is for debugging it is intended to show that the second line in each quadrant is the problem child by marking it as construction. It also shows that that line in each quadrant has different endpoints, so one line isn't on top of another.
Here's the section of the code which calls make quadrant:
# first quadrant
quadOneElements = makeQuadrant(1, sketchLines, sketchArcs, sketchGeometryConstraints, 1, 1)
arcCenter = quadOneElements["arcCenter"]
radialTextPoint = adsk.core.Point3D.create(arcCenter.x + .15,arcCenter.y + .15,arcCenter.z)
sketchDimensions.addRadialDimension(quadOneElements["arc"],radialTextPoint)
# second quadrant
quadTwoElements = makeQuadrant(2, sketchLines, sketchArcs, sketchGeometryConstraints, 1, -1)
# third quadrant
quadThreeElements = makeQuadrant(3, sketchLines, sketchArcs, sketchGeometryConstraints, -1, -1)
# fourth quadrant
quadFourElements = makeQuadrant(4, sketchLines, sketchArcs, sketchGeometryConstraints, -1, 1)
I'm at my wits end to come up with a theory why that line is missing.
Solved! Go to Solution.