Hello there, if you want to make the investment in learning CAD and want to do drawings programmatically, then FreeCAD with the the CadQuery Module for FreeCAD (https://github.com/jmwright/cadquery-freecad-module) is an elegant option. CheersBrian
On Tue, 2017-11-28 at 15:37 +1100, Erik Christiansen wrote: > On 23.11.17 21:35, Doug wrote: > > On 11/23/2017 05:06 PM, Emanuel Berg wrote: > > > Joe wrote: > > > > > > > What you won't be given is a dialog box with > > > > X and Y size and coordinates, and invited to > > > > edit them, it doesn't work that way. > > > > That's how an object-oriented drawing program > > > > would work. > > > > > > Well, this is certainly a first that I'm an > > > OO guy by intuition, because yes, that is how > > > I would expect it to work. But that is drawing, > > > not CAD? > > > > > > I wonder if I should get an OO drawing > > > application instead, and what would that be - > > > Dia? > > > > > > Or perhaps learn CAD as that's more powerful in > > > the long run? > > > > > > > Learning CAD is a hard road, but a worthwhile one, I think, because it is so > > versatile. > > Which one you learn will make some difference, depending on what you wind up > > wanting to do with it. > > After trying to get various GUI drawing packages to function at the most > basic level, and failing to produce anything, I'm just finishing the 8 > drawings for my new house build (floor plan, elevations, sections, and > site plan), using raw postscript. That has proven a better fit for a > retired programmer. > > I just made up functions for wall sections, windows, smoke alarms, ..., > and then placed them programmatically at the desired coordinates, with > the desired orientation. There is never any doubt about where a > structure is located, and wall lengths are auto-calculated by summing > the lengths of individual components. Using that in a "dimension" > primitive ensures that the annotated dimension is real. And saving some > floorplan offsets in variables ensured that the corresponding features > were accurately placed in the sections on the next page. > > And a variable was used for wallheight. When I was talked into changing > from 2.4m to 2.7m ceilings, editing one variable instantly lifted the > roof on four elevation and two section drawings. > > The 8 detailed drawings required around 800 lines of postscript, but > that's creeping up toward 900 now that I'm adding notes and > specifications. > > It's faster for me, because GUI produced nothing, but not everyone > enjoys first programming a stack-based language for a door: > > /door % S: length (door width) > { dup > /wall_length exch wall_length add 60 add def % Keep global variable outside > dict scope. > 1 dict begin % 60 = 2*30 jambs. > /length exch def % Take length off the stack. > 30 100 box > currentpoint translate > 0 length lineto length length length 0 length arct 30 100 box gstroke > gsave 200 300 moveto length buf cvs show % Size > text. > grestore > end % End of local var scope. > } def > > but after that, "820 door" chains an 820 mm wide door on the end of the > current wall, in the current orientation, with lines for the open door > and swing arc, plus the dimension in text. The variable wall_length is > kept in global scope, because it accumulates the whole wall length for > dimensioning purposes. > > If I were building more than one house, it might almost be worth taking > the thing beyond a one-off convenience hack, but the output is currently > in for planning approval, and building approval will hopefully not > require major edits. (It is, however, a delight to be able to edit my > drawings with Vim. :-)) > > For viewing, ps2pdf, then xpdf or whatever > Applications->Graphics->Document_Viewer is in reality, do the job. > It's worth knowing that 'r' causes xpdf to reload the pdf file. > And when diving into postscript, it's worthwhile having downloaded the > BLUEBOOK.PDF first. > > Erik >