Draft: Fixes bugs from last commit

This commit is contained in:
Yorik van Havre 2013-07-31 13:55:06 -03:00
parent b3f79881c5
commit c6858f69fd
8 changed files with 39 additions and 38 deletions

View File

@ -26,6 +26,7 @@ __author__ = "Yorik van Havre"
__url__ = "http://free-cad.sourceforge.net"
import FreeCAD,FreeCADGui,Draft
from FreeCAD import Vector
from PyQt4 import QtGui,QtCore
from DraftTools import translate
@ -309,7 +310,7 @@ class Component:
v1 = DraftVecUtils.scaleTo(n,width*1.1) # we extrude a little more to avoid face-on-face
f.translate(v1)
v2 = v1.negative()
v2 = v1.multiply(-2)
v2 = Vector(v1).multiply(-2)
f = f.extrude(v2)
if plac:
f.Placement = plac

View File

@ -411,18 +411,18 @@ class _Wall(ArchComponent.Component):
if not DraftVecUtils.isNull(dvec):
dvec.normalize()
if obj.Align == "Left":
dvec = dvec.multiply(width)
dvec.multiply(width)
w2 = DraftGeomUtils.offsetWire(wire,dvec)
w1 = Part.Wire(DraftGeomUtils.sortEdges(wire.Edges))
sh = DraftGeomUtils.bind(w1,w2)
elif obj.Align == "Right":
dvec = dvec.multiply(width)
dvec.multiply(width)
dvec = dvec.negative()
w2 = DraftGeomUtils.offsetWire(wire,dvec)
w1 = Part.Wire(DraftGeomUtils.sortEdges(wire.Edges))
sh = DraftGeomUtils.bind(w1,w2)
elif obj.Align == "Center":
dvec = dvec.multiply(width/2)
dvec.multiply(width/2)
w1 = DraftGeomUtils.offsetWire(wire,dvec)
dvec = dvec.negative()
w2 = DraftGeomUtils.offsetWire(wire,dvec)
@ -459,8 +459,8 @@ class _Wall(ArchComponent.Component):
pass
elif (len(base.Faces) == 1) and (not obj.ForceWire):
if height:
norm = normal.multiply(height)
base = base.extrude(norm)
normal.multiply(height)
base = base.extrude(normal)
elif len(base.Wires) >= 1:
temp = None
for wire in obj.Base.Shape.Wires:

View File

@ -1018,12 +1018,12 @@ def array(objectslist,arg1,arg2,arg3,arg4=None):
typecheck([(xvector,Vector), (yvector,Vector), (xnum,int), (ynum,int)], "rectArray")
if not isinstance(objectslist,list): objectslist = [objectslist]
for xcount in range(xnum):
currentxvector=xvector.multiply(xcount)
currentxvector=Vector(xvector).multiply(xcount)
if not xcount==0:
move(objectslist,currentxvector,True)
for ycount in range(ynum):
currentxvector=FreeCAD.Base.Vector(currentxvector)
currentyvector=currentxvector.add(yvector.multiply(ycount))
currentyvector=currentxvector.add(Vector(yvector).multiply(ycount))
if not ycount==0:
move(objectslist,currentyvector,True)
def polarArray(objectslist,center,angle,num):
@ -1212,7 +1212,7 @@ def offset(obj,delta,copy=False,bind=False,sym=False,occ=False):
pass
else:
if sym:
d1 = delta.multiply(0.5)
d1 = Vector(delta).multiply(0.5)
d2 = d1.negative()
n1 = DraftGeomUtils.offsetWire(obj.Shape,d1)
n2 = DraftGeomUtils.offsetWire(obj.Shape,d2)
@ -3695,21 +3695,21 @@ class _Array(_DraftObject):
import Part
base = [shape.copy()]
for xcount in range(xnum):
currentxvector=xvector.multiply(xcount)
currentxvector=Vector(xvector).multiply(xcount)
if not xcount==0:
nshape = shape.copy()
nshape.translate(currentxvector)
base.append(nshape)
for ycount in range(ynum):
currentyvector=FreeCAD.Vector(currentxvector)
currentyvector=currentyvector.add(yvector.multiply(ycount))
currentyvector=currentyvector.add(Vector(yvector).multiply(ycount))
if not ycount==0:
nshape = shape.copy()
nshape.translate(currentyvector)
base.append(nshape)
for zcount in range(znum):
currentzvector=FreeCAD.Vector(currentyvector)
currentzvector=currentzvector.add(zvector.multiply(zcount))
currentzvector=currentzvector.add(Vector(zvector).multiply(zcount))
if not zcount==0:
nshape = shape.copy()
nshape.translate(currentzvector)

View File

@ -1871,8 +1871,8 @@ def circlefrom1Line2Points(edge, p1, p2):
v2 = p2.sub(s)
projectedDist = math.sqrt(abs(v1.dot(v2)))
edgeDir = vec(edge); edgeDir.normalize()
projectedCen1 = Vector.add(s, edgeDir.multiply(projectedDist))
projectedCen2 = Vector.add(s, edgeDir.multiply(-projectedDist))
projectedCen1 = Vector.add(s, Vector(edgeDir).multiply(projectedDist))
projectedCen2 = Vector.add(s, Vector(edgeDir).multiply(-projectedDist))
perpEdgeDir = edgeDir.cross(Vector(0,0,1))
perpCen1 = Vector.add(projectedCen1, perpEdgeDir)
perpCen2 = Vector.add(projectedCen2, perpEdgeDir)
@ -1968,8 +1968,8 @@ def circleFromPointLineRadius (point, edge, radius):
if dist.Length == 0:
segment = vec(edge)
perpVec = DraftVecUtils.crossproduct(segment); perpVec.normalize()
normPoint_c1 = perpVec.multiply(radius)
normPoint_c2 = perpVec.multiply(-radius)
normPoint_c1 = Vector(perpVec).multiply(radius)
normPoint_c2 = Vector(perpVec).multiply(-radius)
center1 = point.add(normPoint_c1)
center2 = point.add(normPoint_c2)
elif dist.Length > 2 * radius:
@ -1989,8 +1989,8 @@ def circleFromPointLineRadius (point, edge, radius):
dist = math.sqrt(radius**2 - (radius - normDist)**2)
centerNormVec = DraftVecUtils.scaleTo(point.sub(normPoint), radius)
edgeDir = edge.Vertexes[0].Point.sub(normPoint); edgeDir.normalize()
center1 = centerNormVec.add(normPoint.add(edgeDir.multiply(dist)))
center2 = centerNormVec.add(normPoint.add(edgeDir.multiply(-dist)))
center1 = centerNormVec.add(normPoint.add(Vector(edgeDir).multiply(dist)))
center2 = centerNormVec.add(normPoint.add(Vector(edgeDir).multiply(-dist)))
circles = []
if center1:
circ = Part.Circle(center1, NORM, radius)
@ -2020,8 +2020,8 @@ def circleFrom2PointsRadius(p1, p2, radius):
dir = vec(p1_p2); dir.normalize()
perpDir = dir.cross(Vector(0,0,1)); perpDir.normailze()
dist = math.sqrt(radius**2 - (dist_p1p2 / 2.0)**2)
cen1 = Vector.add(mid, perpDir.multiply(dist))
cen2 = Vector.add(mid, perpDir.multiply(-dist))
cen1 = Vector.add(mid, Vector(perpDir).multiply(dist))
cen2 = Vector.add(mid, Vector(perpDir).multiply(-dist))
circles = []
if cen1: circles.append(Part.Circle(cen1, norm, radius))
if cen2: circles.append(Part.Circle(cen2, norm, radius))
@ -2266,12 +2266,12 @@ def findHomotheticCenterOfCircles(circle1, circle2):
perpCenDir = cenDir.cross(Vector(0,0,1)); perpCenDir.normalize()
# Get point on first circle
p1 = Vector.add(circle1.Curve.Center, perpCenDir.multiply(circle1.Curve.Radius))
p1 = Vector.add(circle1.Curve.Center, Vector(perpCenDir).multiply(circle1.Curve.Radius))
centers = []
# Calculate inner homothetic center
# Get point on second circle
p2_inner = Vector.add(circle1.Curve.Center, perpCenDir.multiply(-circle1.Curve.Radius))
p2_inner = Vector.add(circle1.Curve.Center, Vector(perpCenDir).multiply(-circle1.Curve.Radius))
hCenterInner = DraftVecUtils.intersect(circle1.Curve.Center, circle2.Curve.Center, p1, p2_inner, True, True)
if hCenterInner:
centers.append(hCenterInner)
@ -2279,7 +2279,7 @@ def findHomotheticCenterOfCircles(circle1, circle2):
# Calculate outer homothetic center (only exists of the circles have different radii)
if circle1.Curve.Radius != circle2.Curve.Radius:
# Get point on second circle
p2_outer = Vector.add(circle1.Curve.Center, perpCenDir.multiply(circle1.Curve.Radius))
p2_outer = Vector.add(circle1.Curve.Center, Vector(perpCenDir).multiply(circle1.Curve.Radius))
hCenterOuter = DraftVecUtils.intersect(circle1.Curve.Center, circle2.Curve.Center, p1, p2_outer, True, True)
if hCenterOuter:
centers.append(hCenterOuter)

View File

@ -1351,7 +1351,7 @@ class Ellipse(Creator):
p1 = self.node[0]
p3 = self.node[-1]
diagonal = p3.sub(p1)
halfdiag = diagonal.multiply(0.5)
halfdiag = Vector(diagonal).multiply(0.5)
center = p1.add(halfdiag)
p2 = p1.add(DraftVecUtils.project(diagonal, plane.v))
p4 = p1.add(DraftVecUtils.project(diagonal, plane.u))
@ -1761,7 +1761,7 @@ class Dimension(Creator):
# for unlinked arc mode:
# if self.arcmode:
# v = self.node[1].sub(self.node[0])
# v = v.multiply(0.5)
# v.multiply(0.5)
# cen = self.node[0].add(v)
# self.node = [self.node[0],self.node[1],cen]
self.createObject()
@ -2656,7 +2656,7 @@ class Trimex(Modifier):
if real:
if self.force:
ray = self.newpoint.sub(v1)
ray = ray.multiply(self.force/ray.Length)
ray.multiply(self.force/ray.Length)
self.newpoint = Vector.add(v1,ray)
newedges.append(Part.Line(self.newpoint,v2).toShape())
else:

View File

@ -261,9 +261,9 @@ class plane:
def getGlobalCoords(self,point):
"returns the global coordinates of the given point, taken relatively to this working plane"
vx = self.u.multiply(point.x)
vy = self.v.multiply(point.y)
vz = self.axis.multiply(point.z)
vx = Vector(self.u).multiply(point.x)
vy = Vector(self.v).multiply(point.y)
vz = Vector(self.axis).multiply(point.z)
pt = (vx.add(vy)).add(vz)
return pt.add(self.position)
@ -285,9 +285,9 @@ class plane:
def getGlobalRot(self,point):
"Same as getGlobalCoords, but discards the WP position"
vx = self.u.multiply(point.x)
vy = self.v.multiply(point.y)
vz = self.axis.multiply(point.z)
vx = Vector(self.u).multiply(point.x)
vy = Vector(self.v).multiply(point.y)
vz = Vector(self.axis).multiply(point.z)
pt = (vx.add(vy)).add(vz)
return pt

View File

@ -145,8 +145,8 @@ def calcBulge(v1,bulge,v2):
'''
chord = v2.sub(v1)
sagitta = (bulge * chord.Length)/2
startpoint = v1.add(chord.multiply(0.5))
perp = chord.cross(Vector(0,0,1))
startpoint = v1.add(chord.multiply(0.5))
if not DraftVecUtils.isNull(perp): perp.normalize()
endpoint = perp.multiply(sagitta)
return startpoint.add(endpoint)
@ -231,7 +231,7 @@ class fcformat:
v1 = FreeCAD.Vector(r1,g1,b1)
v2 = FreeCAD.Vector(r2,g2,b2)
v = v2.sub(v1)
v = v.multiply(0.5)
v.multiply(0.5)
cv = v1.add(v)
else:
c1 = bparams.GetUnsigned("BackgroundColor")

View File

@ -320,7 +320,7 @@ def arcend2center(lastvec,currentvec,rx,ry,xrotation=0.0,correction=False):
rx = float(rx)
ry = float(ry)
v0 = lastvec.sub(currentvec)
v0 = v0.multiply(0.5)
v0.multiply(0.5)
m1=FreeCAD.Matrix()
m1.rotateZ(-xrotation) #Formular 6.5.1
v1=m1.multiply(v0)
@ -347,7 +347,7 @@ def arcend2center(lastvec,currentvec,rx,ry,xrotation=0.0,correction=False):
m2=FreeCAD.Matrix()
m2.rotateZ(xrotation)
centeroff = currentvec.add(lastvec)
centeroff = centeroff.multiply(.5)
centeroff.multiply(.5)
vcenter = m2.multiply(vcx1).add(centeroff) # Step3 F.6.5.3
#angle1 = Vector(1,0,0).getAngle(Vector((v1.x-vcx1.x)/rx,(v1.y-vcx1.y)/ry,0)) # F.6.5.5
#angledelta = Vector((v1.x-vcx1.x)/rx,(v1.y-vcx1.y)/ry,0).getAngle(Vector((-v1.x-vcx1.x)/rx,(-v1.y-vcx1.y)/ry,0)) # F.6.5.6
@ -616,11 +616,11 @@ class svgHandler(xml.sax.ContentHandler):
else:
# anticlockwise
perp = DraftVecUtils.rotate2D(chord,math.pi/2)
chord = chord.multiply(.5)
chord.multiply(.5)
if chord.Length > rx: a = 0
else: a = math.sqrt(rx**2-chord.Length**2)
s = rx - a
perp = perp.multiply(s/perp.Length)
perp.multiply(s/perp.Length)
midpoint = lastvec.add(chord.add(perp))
seg = Part.Arc(lastvec,midpoint,currentvec).toShape()
else:# big arc or elliptical arc