def addBillboards(): # must have projected things already FileUtils.importFile('C:\\amigos\\templates\\billboardangled.3dm') FileUtils.importFile('C:\\amigos\\templates\\billboardstraight.3dm') lyrAtt = LayerUtils.layerAttributes('billboards') bbs = LayerUtils.getLayerGeometry('geocodedbillboards-projected') bbs.extend(LayerUtils.getLayerGeometry('foundbillboards-projected')) bbpoints = [bb.Location for bb in bbs] frwys = LayerUtils.getLayerGeometry('freeways-projected') roads = LayerUtils.getLayerGeometry('roads-projected') for pt in bbpoints: vector = GeomTools.vectorToClosestCurve(pt, frwys, 100.0) if vector: # freeway within 100m bbModel = LayerUtils.getLayerGeometry('billboardangled') else: # no freeways within 100meters vector = GeomTools.vectorToClosestCurve(pt, roads) bbModel = LayerUtils.getLayerGeometry('billboardstraight') GeomTools.moveMany(bbModel, Vector3d(pt)) angle = vector.VectorAngle(Vector3d.XAxis, vector, Plane.WorldXY) GeomTools.rotateMany(bbModel, angle, Vector3d.ZAxis, pt) GeomTools.bakeMany(bbModel, lyrAtt) LayerUtils.deleteLayer('billboardstraight') LayerUtils.deleteLayer('billboardangled')
def addBillboards(): # must have projected things already FileUtils.importFile('C:\\amigos\\templates\\billboardangled.3dm') FileUtils.importFile('C:\\amigos\\templates\\billboardstraight.3dm') lyrAtt = LayerUtils.layerAttributes('billboards') bbs = LayerUtils.getLayerGeometry('geocodedbillboards-projected') bbs.extend( LayerUtils.getLayerGeometry('foundbillboards-projected') ) bbpoints = [bb.Location for bb in bbs] frwys = LayerUtils.getLayerGeometry('freeways-projected') roads = LayerUtils.getLayerGeometry('roads-projected') for pt in bbpoints: vector = GeomTools.vectorToClosestCurve(pt, frwys, 100.0) if vector: # freeway within 100m bbModel = LayerUtils.getLayerGeometry('billboardangled') else: # no freeways within 100meters vector = GeomTools.vectorToClosestCurve(pt, roads) bbModel = LayerUtils.getLayerGeometry('billboardstraight') GeomTools.moveMany( bbModel, Vector3d(pt) ) angle = vector.VectorAngle( Vector3d.XAxis, vector, Plane.WorldXY ) GeomTools.rotateMany( bbModel, angle, Vector3d.ZAxis, pt ) GeomTools.bakeMany( bbModel, lyrAtt ) LayerUtils.deleteLayer('billboardstraight') LayerUtils.deleteLayer('billboardangled')