def addToPath( self, line, location ): 'Add a point to travel and maybe extrusion.' if self.oldLocation == None: return begin = self.scale * self.oldLocation - self.scaleCenterBottom end = self.scale * location - self.scaleCenterBottom displayString = '%s %s' % ( self.lineIndex + 1, line ) tagString = 'colored_line_index: %s %s' % ( len( self.skeinPane.coloredLines ), len( self.skeinPanes ) - 1 ) coloredLine = tableau.ColoredLine( begin, '', displayString, end, tagString ) coloredLine.z = location.z self.skeinPane.coloredLines.append( coloredLine ) self.coloredThread.append( coloredLine )
def addToPath( self, line, location ): "Add a point to travel and maybe extrusion." if self.oldLocation == None: return colorName = 'gray' locationComplex = location.dropAxis() oldLocationComplex = self.oldLocation.dropAxis() begin = self.getScreenCoordinates( oldLocationComplex ) end = self.getScreenCoordinates( locationComplex ) if self.extruderActive: colorName = self.colorNames[ self.extrusionNumber % len( self.colorNames ) ] displayString = '%s %s' % ( self.lineIndex + 1, line ) tagString = 'colored_line_index: %s %s' % ( len( self.skeinPane ), len( self.skeinPanes ) - 1 ) coloredLine = tableau.ColoredLine( begin, colorName, displayString, end, tagString ) coloredLine.isExtrusionThread = self.extruderActive self.skeinPane.append( coloredLine )
def __init__( self, repository, skein ): "Initialize the skein window." self.arrowshape = ( 24, 30, 9 ) self.addCanvasMenuRootScrollSkein( repository, skein, '_skeiniso', 'Skeiniso') self.center = 0.5 * self.screenSize self.motionStippleName = 'gray75' halfCenter = 0.5 * self.center.real negativeHalfCenter = - halfCenter self.halfCenterModel = halfCenter / skein.scale negativeHalfCenterModel = - self.halfCenterModel roundedHalfCenter = euclidean.getThreeSignificantFigures( self.halfCenterModel ) roundedNegativeHalfCenter = euclidean.getThreeSignificantFigures( negativeHalfCenterModel ) self.negativeAxisLineX = tableau.ColoredLine( Vector3(), 'darkorange', None, Vector3( negativeHalfCenter ), 'X Negative Axis: Origin -> %s,0,0' % roundedNegativeHalfCenter ) self.negativeAxisLineY = tableau.ColoredLine( Vector3(), 'gold', None, Vector3( 0.0, negativeHalfCenter ), 'Y Negative Axis: Origin -> 0,%s,0' % roundedNegativeHalfCenter ) self.negativeAxisLineZ = tableau.ColoredLine( Vector3(), 'skyblue', None, Vector3( 0.0, 0.0, negativeHalfCenter ), 'Z Negative Axis: Origin -> 0,0,%s' % roundedNegativeHalfCenter ) self.positiveAxisLineX = tableau.ColoredLine( Vector3(), 'darkorange', None, Vector3( halfCenter ), 'X Positive Axis: Origin -> %s,0,0' % roundedHalfCenter ) self.positiveAxisLineY = tableau.ColoredLine( Vector3(), 'gold', None, Vector3( 0.0, halfCenter ), 'Y Positive Axis: Origin -> 0,%s,0' % roundedHalfCenter ) self.positiveAxisLineZ = tableau.ColoredLine( Vector3(), 'skyblue', None, Vector3( 0.0, 0.0, halfCenter ), 'Z Positive Axis: Origin -> 0,0,%s' % roundedHalfCenter ) self.repository.axisRulings.setUpdateFunction( self.setWindowToDisplaySaveUpdate ) self.repository.bandHeight.setUpdateFunction( self.setWindowToDisplaySavePhoenixUpdate ) self.repository.bottomBandBrightness.setUpdateFunction( self.setWindowToDisplaySavePhoenixUpdate ) self.repository.bottomLayerBrightness.setUpdateFunction( self.setWindowToDisplaySavePhoenixUpdate ) self.repository.fromTheBottom.setUpdateFunction( self.setWindowToDisplaySavePhoenixUpdate ) self.repository.fromTheTop.setUpdateFunction( self.setWindowToDisplaySavePhoenixUpdate ) self.setWindowNewMouseTool( display_line.getNewMouseTool, self.repository.displayLine ) self.setWindowNewMouseTool( view_move.getNewMouseTool, self.repository.viewMove ) self.setWindowNewMouseTool( view_rotate.getNewMouseTool, self.repository.viewRotate ) self.repository.numberOfFillBottomLayers.setUpdateFunction( self.setWindowToDisplaySavePhoenixUpdate ) self.repository.numberOfFillTopLayers.setUpdateFunction( self.setWindowToDisplaySavePhoenixUpdate ) self.repository.viewpointLatitude.setUpdateFunction( self.setWindowToDisplaySaveUpdate ) self.repository.viewpointLongitude.setUpdateFunction( self.setWindowToDisplaySaveUpdate ) self.repository.widthOfAxisNegativeSide.setUpdateFunction( self.setWindowToDisplaySaveUpdate ) self.repository.widthOfAxisPositiveSide.setUpdateFunction( self.setWindowToDisplaySaveUpdate ) self.repository.widthOfFillBottomThread.setUpdateFunction( self.setWindowToDisplaySaveUpdate ) self.repository.widthOfFillTopThread.setUpdateFunction( self.setWindowToDisplaySaveUpdate ) self.repository.widthOfInfillThread.setUpdateFunction( self.setWindowToDisplaySaveUpdate ) self.repository.widthOfLoopThread.setUpdateFunction( self.setWindowToDisplaySaveUpdate ) self.repository.widthOfPerimeterInsideThread.setUpdateFunction( self.setWindowToDisplaySaveUpdate ) self.repository.widthOfPerimeterOutsideThread.setUpdateFunction( self.setWindowToDisplaySaveUpdate ) self.repository.widthOfRaftThread.setUpdateFunction( self.setWindowToDisplaySaveUpdate ) self.addMouseToolsBind() self.negativeRulings = [] self.positiveRulings = [] for rulingIndex in xrange( 1, int( math.ceil( self.halfCenterModel / self.rulingSeparationWidthMillimeters ) ) ): modelDistance = rulingIndex * self.rulingSeparationWidthMillimeters self.negativeRulings.append( Ruling( modelDistance, self.getRoundedRulingText( 1, - modelDistance ) ) ) self.positiveRulings.append( Ruling( modelDistance, self.getRoundedRulingText( 1, modelDistance ) ) ) self.rulingExtentHalf = 0.5 * self.rulingExtent