[TD]Cosmetic function overhaul (#14216)
* [TD]Cosmetic geometry and tools update - all cosmetics to store geometry in same form - all cosmetics to survive scaling and rotation - extension functions to survive scaling and rotation * [TD]overhaul leader point storage and editing - add py routine makeLeader(points) * [TD]add leader conversion utility * [TD]Set Leader RotateWithView default to true * [TD]fix intersection vertex position * [TD]add CosmeticEdge::makeLineFromCanonicalPoints * [TD]fix 2 Extension tools - positioning in DrawCosmeticCircle - mishandling of points in execLineParallelPerpendicular * [TD]Remove duplicate constexpr * [TD]fix 2x Cosmetic arc tools * [TD]refactor LineFormat out of Cosmetic * [TD]move cosmetic appearance settings to LineFormat * [TD]remove 2 unused methods * [TD]apply format to blue line & circle tools * [TD]fix ballon arrowhead does not rotate with view * [TD]fix CosmeticCircle3Points * [TD]allow multiple cosmetic object deletions * [TD]fix extend/shorten centerline
This commit is contained in:
77
src/Mod/TechDraw/ConversionUtilities/moveViews.py
Normal file
77
src/Mod/TechDraw/ConversionUtilities/moveViews.py
Normal file
@@ -0,0 +1,77 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
# **************************************************************************
|
||||
# Copyright (c) 2018 WandererFan <wandererfan@gmail.com> *
|
||||
# *
|
||||
# This file is part of the FreeCAD CAx development system. *
|
||||
# *
|
||||
# This program is free software; you can redistribute it and/or modify *
|
||||
# it under the terms of the GNU Lesser General Public License (LGPL) *
|
||||
# as published by the Free Software Foundation; either version 2 of *
|
||||
# the License, or (at your option) any later version. *
|
||||
# for detail see the LICENCE text file. *
|
||||
# *
|
||||
# FreeCAD is distributed in the hope that it will be useful, *
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
# GNU Library General Public License for more details. *
|
||||
# *
|
||||
# You should have received a copy of the GNU Library General Public *
|
||||
# License along with FreeCAD; if not, write to the Free Software *
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
|
||||
# USA *
|
||||
# **************************************************************************
|
||||
|
||||
# Name: moveView macro
|
||||
# About: move Views from Drawing Page to TechDraw Page in the current doc
|
||||
# Usage: select 1 Drawing Page and 1 TechDraw Page, run moveViews macro
|
||||
# Outcome: Content of Drawing Page will be inserted into TechDraw Page as
|
||||
# DrawViewSymbol (ie an SVG symbol)
|
||||
|
||||
import FreeCAD
|
||||
import FreeCADGui
|
||||
|
||||
svgHead = (
|
||||
"<svg\n"
|
||||
+ ' xmlns="http://www.w3.org/2000/svg" version="1.1"\n'
|
||||
+ ' xmlns:freecad="https://www.freecad.org/wiki/index.php?title=Svg_Namespace">\n'
|
||||
)
|
||||
svgTail = "\n</svg>"
|
||||
|
||||
|
||||
def moveViews():
|
||||
s = FreeCADGui.Selection.getSelection()
|
||||
|
||||
if len(s) != 2:
|
||||
print("Please select 1 Drawing Page and 1 TechDraw Page")
|
||||
return
|
||||
|
||||
print("First object in selection is a: ", s[0].TypeId)
|
||||
print("Second object in selection is a: ", s[1].TypeId)
|
||||
if s[0].isDerivedFrom("Drawing::FeaturePage") and s[1].isDerivedFrom(
|
||||
"TechDraw::DrawPage"
|
||||
):
|
||||
dPage = s[0]
|
||||
tPage = s[1]
|
||||
elif s[0].isDerivedFrom("TechDraw::DrawPage") and s[1].isDerivedFrom(
|
||||
"Drawing::FeaturePage"
|
||||
):
|
||||
tPage = s[0]
|
||||
dPage = s[1]
|
||||
else:
|
||||
print("Please select 1 Drawing Page and 1 TechDraw Page")
|
||||
return
|
||||
|
||||
for o in dPage.OutList:
|
||||
newName = "DraftView" + str(i).zfill(3)
|
||||
print("moving " + o.Name + " to " + newName)
|
||||
svg = svgHead + o.ViewResult + svgTail
|
||||
no = FreeCAD.ActiveDocument.addObject("TechDraw::DrawViewSymbol", newName)
|
||||
no.Symbol = svg
|
||||
tPage.addView(no)
|
||||
|
||||
print("moveViews moved " + str(len(dPage.OutList)) + " views")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
moveViews()
|
||||
45
src/Mod/TechDraw/ConversionUtilities/updateLeaderLines.py
Normal file
45
src/Mod/TechDraw/ConversionUtilities/updateLeaderLines.py
Normal file
@@ -0,0 +1,45 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
# ***************************************************************************
|
||||
# * Copyright (c) 2024 Wanderer Fan <wandererfan@gmail.com> *
|
||||
# * *
|
||||
# * This program is free software; you can redistribute it and/or modify *
|
||||
# * it under the terms of the GNU Lesser General Public License (LGPL) *
|
||||
# * as published by the Free Software Foundation; either version 2 of *
|
||||
# * the License, or (at your option) any later version. *
|
||||
# * for detail see the LICENCE text file. *
|
||||
# * *
|
||||
# * This program is distributed in the hope that it will be useful, *
|
||||
# * but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
# * GNU Library General Public License for more details. *
|
||||
# * *
|
||||
# * You should have received a copy of the GNU Library General Public *
|
||||
# * License along with this program; if not, write to the Free Software *
|
||||
# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
|
||||
# * USA *
|
||||
# * *
|
||||
# ***************************************************************************
|
||||
#
|
||||
# updates any leader lines in the current document from pre-v0.22 coordinates
|
||||
# to v0.22+ coordinates.
|
||||
|
||||
# usage: open the document to be converted in FreeCAD then run this macro and
|
||||
# save the result.
|
||||
|
||||
|
||||
import TechDraw
|
||||
|
||||
RezFactor = 10.0
|
||||
|
||||
for obj in FreeCAD.ActiveDocument.Objects:
|
||||
print("obj: {}".format(obj.Name))
|
||||
if obj.isDerivedFrom("TechDraw::DrawLeaderLine"):
|
||||
pointsAll = obj.WayPoints
|
||||
newPoints = list()
|
||||
for point in pointsAll:
|
||||
point = point / RezFactor
|
||||
newPoints.append(point)
|
||||
obj.WayPoints = newPoints
|
||||
|
||||
print("conversion complete")
|
||||
Reference in New Issue
Block a user