Templot Club forums powered for Martin Wynne by XenForo :

TEMPLOT 3D PLUG TRACK - To get up to speed with this experimental project click here.   To watch an introductory video click here.   See the User Guide at Bexhill West.

     Templot5 - To join this open-source project on GitHub click here.  For the latest on-going developments click here.

  • The Plug Track functions are experimental and still being developed. Some of the earlier pages of this topic are now out-of-date.

    For an updated overview of this project see this topic.   For some practical modelling aspects of using Plug Track see Building 3D Track.

    The assumption is that you have your own machines on which to experiment, or helpful friends with machines. Please do not send Templot files to commercial laser cutting or 3D printing firms while this project is still experimental, because the results are unpredictable and possibly wasteful.

    Some pages of this and other topics include contributions from members who are creating and posting their own CAD designs for 3D printing and laser-cutting. Do not confuse them with Templot's own exported CAD files. All files derived from Templot are © Martin Wynne.
  • The Plug Track functions are experimental and still being developed.

    For an updated overview of this project see this topic.   For some practical modelling aspects of using Plug Track see Building 3D Track.

    The assumption is that you have your own machines on which to experiment, or helpful friends with machines. Please do not send Templot files to commercial laser cutting or 3D printing firms while this project is still experimental, because the results are unpredictable and possibly wasteful.

    Some pages of this and other topics include contributions from members who are creating and posting their own CAD designs for 3D printing and laser-cutting. Do not confuse them with Templot's own exported CAD files. All files derived from Templot are © Martin Wynne.

OpenTemplot2024

Quick reply >
Hi Martin,
I have added, compiled & tested a few more data items in save/load sections of dfx_unit.pas

Enhancement Idea đź’ˇ
Perhaps after the [ load ] button has been invoked in a session we could display that fact in the left hand panel of the DFX dialogue?

1720648482212.png


Just above the red "v.244 experimental work in" .... text....

Ah that should read red "v.555....." :)

Two minutes later:-
1720648964679.png


Starting to get to grips with this Lazarus stuff!

Steve
 

Attachments

  • dxf_unit.pas
    681.9 KB · Views: 31
_______________
message ref: 11866
Hi Guys, I have been following this with a great deal of interesting, One thing thats quite clear is, there are several difference reasons for people showing interested in getting a working version of Templot 5 up and running. There also quite a wide rage of programing skills and different knowledge on programming being brought to this joint- venture.

To some extent you can are argue, because all of this was originally Martin's Wynne work, so it follow's Martin is a logical lead finger.
The first thing to confirm however is, the new Templot 5 will not be using Delphi 5 as the programing IDE of program of choice, but instead the new Templot 5 will use Lazarus. To some extent this is not deal for Martin, as he is very familiar with Delphi 5 and right know is most likely working out the difference between how Delphi 5 and Lazarus acutely work. Maybe to be a lead figure is not what Martin wants to do?

There is also come correspondence on what if any role Graeme and Alistair could brink to this contribution, thats one its a bit difficult to qualify at this point on time, not least because nobody has heard from either Graeme and Alistair in a few years.
For we know, they could be more happy to carry on there own of a Templot 3 fork. Then joined this new joint- venture.

I think the first that that is headed more than another thing, is a zoom meeting so everybody thats, in interesting in contributing are all on the same page.
Cheers
phil,
 
_______________
message ref: 11867
Starting to get to grips with this Lazarus stuff!
@Steve_Cornford

Hi Steve,

Great. But this is where the brain exercise begins (boiled egg recommended). :)

You wrote:

Code:
seat_thick:=ReadFloat('seat_thick',0);                    // 555b
timber_thick:=ReadFloat('timber_thick',0);                // 555b
... ...

• What happens if someone has already saved an SK4 file from an earlier version, and now loads it into 555 ?

A sub-node with the identifier 'seat_thick' will not exist in the earlier version file. The XML reader will therefore not find it, and will return the default value instead, which you have set above as 0.

This means seat_thick would be set to 0, and having zero seat thickness under the rail will wreck the chairs. :(

There are two solutions to this.

1.
Code:
seat_thick:=ReadFloat('seat_thick',seat_thick);                    // 555b
timber_thick:=ReadFloat('timber_thick',timber_thick);              // 555b
... ...

This means that if the XML reader can't find the 'seat_thick' identifier, it will instead return the value you set as a default, i.e. the existing value of seat_thick, which therefore won't be changed.

This above is probably the "official" way of handling the problem, and preferred by professional XML coders.



2. But I think I prefer this way, because it is easier to follow the logic at a later date, and not least because it involves less typing to make changes to a large chunk of existing code. Against that it is not so robust in dealing with a corrupted file, or a typo in the identifiers:

Code:
var
  prog_version:integer;

  ....
  ....

  header_node:=xml_doc.Root.FindNode('HEADER');

  prog_version:=header_node.ReadInteger('prog_version',0);

  ....
  ....
 
  if prog_version>=555
     then begin
            seat_thick:=ReadFloat('seat_thick',0);
            timber_thick:=ReadFloat('timber_thick',0);
            .... ....
            .... ....
          end; //555

You can simplify this by writing:

Code:
  if header_node.ReadInteger('prog_version',0)>=555
     then begin
            seat_thick:=ReadFloat('seat_thick',0);
            timber_thick:=ReadFloat('timber_thick',0);
            .... ....
            .... ....
          end; //555

But again that's not so immediately obvious when reading at a later date.

For any of this to work, it will need in the HEADER node:

Code:
  WriteInteger('prog_version',program_version,0);



3. So over to you to decide which method to use. But I think it's important to do one or the other -- or maybe some different solution of your devising?



p.s. after the calls to FindNode we ought to be doing:

Code:
if (header_node=nil) or (data_node=nil)
   then begin
          show_modal_message('file loading error');
          EXIT;
        end;

There is always just one more thing. :)

cheers,

Martin.
 
_______________
message ref: 11868
Hi Martin,
Sorry about that.
If the ",0" bit is the default if the xml string not found then I could easily replace it with the real default as coded by you in the var definition?

Another solution would actually be to have two sets of these variables, the second set prefixed by "d_" meaning the default.

Then we could also compare the current value with the default value and change the text colour to a colour meaning "not default value".
Similar to your use of blue text meaning amended.
I have now amended dfx_unit so that it dynamically uses the version in the
red experimental text message.
1720677254942.png


Steve
ps I am on a fasting day of the Michael Mosley 5/2 diet today, so it will be a boiled egg and a banana for breakfast, no toast involved!
 
_______________
message ref: 11869
Hi Martin,
Here is a version that uses the preset values as the default value if load file does not contain the xml string being read.
The downside is that if you (Martin) decide to revise the preset value of a parameter, you will need to remember to also revise the corresponding default value in the ReadFloat statement.

We always have the option (when time permits) of enhancing the code so that before actually performing the load procedure, we store all the current values of the parameters in a default table of parameters, and then use the stored default parameter as the default of the ReadFloat statement.


I have removed the duplicated WriteFloat and ReadFloat statements so that these statements are now (as far as I can tell ) in the order of the var definitions

Steve
ps added the build version to the red text
1720683851568.png
 

Attachments

  • dxf_unit.pas
    681.7 KB · Views: 34
_______________
message ref: 11870
Would it make sense to move the discussions on dfx_unit.pas into its own 'Templot 5 - dfx_unit' topic?
@NoIdea

Hi Martin,

There is always some forum housekeeping that needs doing. I could spend my entire life on it. :)

The difficulty is that a topic has to go off course or get tangled up first. You can't do housekeeping in advance without a crystal ball.

There is a lot of tangled stuff to sort out in the recent discussions. Especially if we are going to use this forum to reference what's happening in a Git thingy. I will get something sorted out.

p.s. it's DXF not DFX. (drawing exchange format). :)

cheers,

Martin.
 
_______________
message ref: 11872
@Paul Boyd @James Walters

Hi Paul,

There is scope for a lot of confusion here. :confused:

When I released the Templot code as open-source in 2018, the primary reason was to insure Templot against the dreaded bus. I was none too clear what would actually happen to the code, or what folks would do with it. I thought some users might like the opportunity to create their own customised version of Templot. Several people urged me to put it on Git, and some did do that, but I never could fathom out how that works (and I still can't :( ).

The various projects arising from that were given names TemplotMEC or OpenTemplot or Templot3 or T3 to keep them separate from Templot2. Most of them fell by the wayside and only Graeme and Alistair continued to take much interest.

In the meantime I continued to develop the code for Templot2 as closed-source -- primarily because of the problem of incompatible BOX files, and also to preserve the non-open-source functions of the sketchboard and the PDF export of large-format track plans.



In the 6 years since then Templot2 has got significantly more complex with the 3D plug track developments. And I got older. I came to the conclusion recently that it would soon become too much for me alone. Not so much the coding, which I still enjoy. But the need to explain and support plug track, over and over again to new users (especially those who can't grasp the concept of an experimental hobby project and expect everything to work fine first time) is getting too much.

When I started on plug track, I assumed that anyone interested in it would be experienced Templot users. That has proven not to be the case, with many new users coming to Templot specifically to create plug track. This makes explaining it 10 times more difficult of course, because to make sense of it requires some Templot skills and some knowledge of prototype track.

So I have now released the current Templot2 files as open-source all over again. The previous 2018 release and everything derived from it can now be regarded as defunct -- unless someone can explain otherwise, or what program improvements are contained within it that might usefully be adopted.

The difference this time is that I'm not going to continue with Templot2 as a separate closed-source program. Future developments will be open-source only, and compiled in Lazarus. Hopefully with others joining in to spread the load. I have managed to solve the BOX file problem, and to provide a kludge for the PDF export (on Windows computers). I hope that we can do the same for the sketchboard in due course, although that is a much bigger task.

The released files are called OpenTemplot2024 and anyone can do whatever they wish with them within the terms of the open-source licence -- including creating your own customised version of Templot if you wish. Just be sure to give it its own name when referring to it or even perhaps releasing it. Such as CoolTemplot or whatever. :)

The publicly-released version of the program will (provisionally) be called Templot5 to replace Templot2 as the main download from this Templot web site. Progress is likely to depend on how many others get involved to help me. There are still quite a lot of loose ends to be fixed before we can get to the first public release of Templot5 (but there is a runnable executable included in the recent zip download of the code).

There will be one final release of Templot2 to provide a smooth transition to Templot5 for all users, but as yet there is no time-scale for that.

The final release of Templot2 will not expire and will remain available for anyone who needs it (for example to access the sketchboard functions). But it will not be updated with later developments, those will be in Templot5 only.

cheers,

Martin.
Thanks Martin, that does make it clearer in my mind. This time it does feel as if Templot5 will succeed where Templot3 didn't. Maybe that's partly down to the switch from Delphi to Lazarus.

When I started on plug track, I assumed that anyone interested in it would be experienced Templot users. That has proven not to be the case, with many new users coming to Templot specifically to create plug track
I think that was inevitable once word got out - I believe I was one of those suggesting it not be widely released at the time!

Cheers,
Paul
 
_______________
message ref: 11873
Here is a version that uses the preset values as the default value if load file does not contain the xml string being read.
@Steve_Cornford

Hi Steve.

If you look in the XML engine xml_unit.pas, you will see that there are a great many functions and options which we might use.

For example:
Code:
if NodeIndexOf(FindNode('seat_thick'))<>-1 then seat_thick:=ReadFloat('seat_thick',0);

which would cause a setting to be changed only if the relevant identifier is found in the file.

We could add an else clause to that to do other things. Such as a user option:

when loading custom files:
• use factory default for a missing setting
• leave a missing setting unchanged
• go to data-entry dialog to make required missing setting

Code:
if NodeIndexOf(FindNode('seat_thick'))<>-1
   then seat_thick:=ReadFloat('seat_thick',0)
   else if dialog_option_radio.Checked=True then dxf_form.seat_button.Click
   else if factory_option_radio.Checked=True then seat_thick:=1.75;

But that's a lot of typing for every setting (although copying and pasting would help). Better would be a local sub-routine to do the work

Code:
get_setting('seat_thick', dxf_form.seat_button, seat_thick);
get_setting('timber_thick', dxf_form.timber_button, timber_thick);
...

Code:
procedure get_setting(id_str:string; click_it:TButton; var custom_data:extended);

begin
...

As we progressively develop plug track and the chairs over future updates, there might be quite a lot of this needed -- users will want to load their custom files from earlier updates. So it's worth thinking about.

cheers,

Martin.
 
_______________
message ref: 11874
Hi Martin,
For now I think I will adopt your first example, as I can see that if the field does not exist in the SK4 saved file then it is best to leave it as it is in case the user has already modified it before invoking the load command.
I am quite happy to do some more cut & pasting in the hope that it frees your time uo for more creative (& hopefully enjoyable) play!
Steve
 
_______________
message ref: 11875
Hi Martin,
For now I think I will adopt your first example, as I can see that if the field does not exist in the SK4 saved file then it is best to leave it as it is in case the user has already modified it before invoking the load command.
I am quite happy to do some more cut & pasting in the hope that it frees your time uo for more creative (& hopefully enjoyable) play!
Steve
@Steve_Cornford

Hi Steve,

Many thanks. But cutting and pasting is a bit tedious -- I don't want to distract you from building your railway. :)

Perhaps we could have a Zoom meeting to discuss who feels capable of doing what?

For example this bug is still waiting for me to look at:

https://85a.uk/templot/club/index.php?posts/11421

Anyone?

At present I'm trying to find why the EMF metafile code which worked fine in the 2019 Lazarus project isn't working now, despite the code being identical. It will be something silly when I find it, but it's proving elusive. :(

cheers,

Martin.
 
_______________
message ref: 11876
Hi Martin,
There is a usefull feature of the source editor having used <ctrl-v> to paste a text string that highlights other occurences of the text string just pasted and this makes it easy to check the three occurences in the if statement are there as they should be.


1720715181875.png

in this case "flange_depth".

By the way, which button on the dxf form allows you to revise "seat_thick"?

Steve
 
_______________
message ref: 11877
in this case "flange_depth".

By the way, which button on the dxf form allows you to revise "seat_thick"?
@Steve_Cornford

Hi Steve,

Yes I found that useful at times. There are several handy functions in the Lazarus editor not available in Delphi5. Although I have noticed that scrolling is not quite as fast or as smooth as Delphi, presumably because of all the extra functions behind the scenes.

There isn't currently any means to change the seat thickness -- it's on the to-do list. Strictly speaking it's part of the chair dimensioning, and there isn't currently any means to set or customize any of that either -- a massive task still waiting. Have a look at all the settings in chairs_unit.pas to see what I mean. The seat thickness is slightly different in that it has to be the same thickness for all model chairs. That's not so on prototype chairs, but we don't have the option of packing the ballast differently under the timbers to get a constant rail top.

cheers,

Martin.
 
_______________
message ref: 11878
Hi Martin,
That edit feature highlighted an error in the previous version I sent you.

set_thickness
I wasn't going mad then when I could not find a screen to check that the save/load procedures were working then:)

Here is my latest version.

In the load section I have added four of the clip parameters, but I have not added them to the save section, then I tested that having saved the parameters, then altered on of the clip parameters so that it was not the original value, upon reloading the parameters , the clip parameter that I had revised still had the revised value, not the original value.

Steve
 

Attachments

  • dxf_unit.pas
    684.6 KB · Views: 25
_______________
message ref: 11879
I wasn't going mad then when I could not find a screen to check that the save/load procedures were working then:)
@Steve_Cornford

Hi Steve,

You have probably realised how much there is still to do for the plug track. :(

To find out what the program is doing, you can use the Lazarus debugging system and set breakpoints. But it's quite a complicated system to use. An easier way is to put a temporary line in the code like this:

showmessage('a123 '+FloatToStr(timber_thick));

The program will stop when it reaches that line and show:

steve_showmessage.png


and when you click OK it will carry on normally.

The "a123" is anything you like to indicate which message you mean if you have inserted several such messages.

When it's working fine you can delete the code or comment it out. You can put as much as you like in the message:

showmessage('b49 '+FloatToStr(timber_thick)+' '+IntToStr(chair_code));

Or just showmessage('abc'); to prove the program is reaching that line.

If you get a compiler error on showmessage, make sure Dialogs, is included in the interface > uses clause at the top of the unit.

Thanks for the file update.

cheers,

Martin.
 
_______________
message ref: 11880
Hi Martin,
I did manage to run the debugger first time, but it appears to me to track the assembler core rather than the source code.
Last time I tried I got s stack overflow so haven't tried since then.

Thanks got the tip about showmessage.

Although I have got the entry form working I wiuld like to understand why or should I say how so the show message technique will help.



In a previous life I was lucky enough to have a really easy and useful debugging program called $dbug for some unknown reason running under Global Ststem Manager, previously known as the BOS operating system which was a portable operating system that predated DOS.
Prior to that I worked on mainframes running George 2, 3 and 4.
Steve

Steve
 
_______________
message ref: 11881
Hi Martin,
I did manage to run the debugger first time, but it appears to me to track the assembler core rather than the source code.
Last time I tried I got s stack overflow so haven't tried since then.

Thanks got the tip about showmessage.

Although I have got the entry form working I wiuld like to understand why or should I say how so the show message technique will help.



In a previous life I was lucky enough to have a really easy and useful debugging program called $dbug for some unknown reason running under Global Ststem Manager, previously known as the BOS operating system which was a portable operating system that predated DOS.
Prior to that I worked on mainframes running George 2, 3 and 4.
Steve

Steve
@Steve_Cornford

Hi Steve,

I found that the Lazarus debugger caused the program to run extremely slow, and massively increased the size of the exe file.

So I have turned it off:


laz_no_debug.png



That is part of the Project Options settings for the project, so if you open the project by opening the .lpi file which I posted, you should get the same settings. It's easy to switch them back on if you like using a full-fat debugging system, but I'm happy to find my way around the code and test variables using temporary showmessage. I often have quite a few of them sprinkled about in any code I'm working on, and they can be quickly commented in or out as needed. And finally deleted when it's all working fine. But that's just me. :)

cheers,

Martin.
 
_______________
message ref: 11882
@graeme @Alistair Ward

What should happen to the previous OpenTemplot/Templot3 project?

It is surely going to cause confusion for anyone coming new to all this. I know Graeme and Alistair have done a lot of work on it in the past, but how to integrate that work into the current Templot5 project is far from clear. Should we even try? Nothing has changed on there for a couple of years now and a lot of it is a mystery to me.

For example, the slewing functions in Templot2 appear to be working fine in Templot5:


View attachment 10097


There are two slewing modes, one using a cosine curve, and one using a hyperbolic tangent:

View attachment 10098


So what is this all about: https://github.com/openTemplot/openTemplot/issues/100 ? And what is the TTestSlewCalculator class?

At present the previous project is linked from our SourceForge page at: https://sourceforge.net/projects/opentemplot/ but I'm minded to remove the link, and possibly previous links to it on here. Otherwise there seems likely to be a lot of confusion all round. As far as I can recall, no code from that project has been included in the current Templot2/Templot5 code.

Any thoughts?

Martin.

I have now updated the OpenTemplot2024 site on SourceForge and removed the previous 2018 files and links:

https://sourceforge.net/projects/opentemplot/

Martin.
 
_______________
message ref: 11883
I've had no response from Graeme or Alistair to the recent discussions. Adrian and I both posted messages on the Templot3 project which also haven't had a response. I don't want to chase them too much on what is supposed to be a hobby activity.
@NoIdea

Now I'm lost. @Alistair Ward hasn't been seen here on Templot Club for over 2 years. But it seems that he is still actively working on a version of Templot called bigbang derived from the 2018 code. This was a few days ago:

https://github.com/alistair-ward/templot3/commit/48154a21eef4d4e65e53cea45b0bf4f3bb9cea1f

https://github.com/alistair-ward/templot3/activity

It's beyond me -- perhaps someone who understands Git could contact him, explain that there are some new OpenTemplot2024 files available, and report back in words I can understand what's going on there?

I don't want to get too involved myself because my brain is already hurting and getting in a muddle just trying to progress the present stuff. We desperately need 8-sided chair base outlines, but it is now going to mean re-working a lot of existing code:


sketch_8_sided_base.png


Thanks,

Martin.
 
_______________
message ref: 11884
Hi Martin,
For example this bug is still waiting for me to look at:

https://85a.uk/templot/club/index.php?posts/11421

Anyone?

I think I have solved this one:-

Within the dxf_background_keeps function, just after your comment " // start again -- rails and timbers around sockets ... "
within the following do loop just after the:-
Code:
       if _3d=False      // 227a ...
                then begin
                  if ((fb_kludge_this=1) and (dxf_form.fb_inner_checkbox.Checked=False))
                  or ((fb_kludge_this=2) and (dxf_form.fb_outer_checkbox.Checked=False))
                     then CONTINUE;
                end;

we need to add something like:-
Code:
       if _3d=True                                                                                                    // 555b
         and template_info.keep_dims.turnout_info2.chairing_flag=False               // 555b
              then CONTINUE;                                                                                   // 555b

but then we also need to add a more rigorous check in the procedure "do_export_templates_dxf" so that just after the group check:-

Code:
               if (group_option_radio.Checked=True) and (any_selected=0)
 then begin
                if alert(6,'    no  group  templates',
                           '||||You have clicked the `0GROUP TEMPLATES ONLY`1 option,'
                           +' but there are no group templates currently selected on the trackpad.'
                           +'||Do you want to include all background templates in the exported file?',
                            '','','','','no  -  cancel  export','yes  -  all  templates  in  file',0)=5
                   then EXIT;
                   all_option_radio.Checked:=True;           // radio item.
              end;

another bit of code that actually scans the templates to check that at least one of them marked as group is marked as having chairs.


Otherwise if you have at least one group template , but no chaired templates you will get an invalid .stl file exported.

I found this by having a group of just one template and that one did not have (experimental)chairs.

Steve
 
_______________
message ref: 11890
@Steve_Cornford
Code:
   if _3d=True                                                                                                    // 555b
         and template_info.keep_dims.turnout_info2.chairing_flag=False               // 555b
              then CONTINUE;                                                                                   // 555b

Thanks Steve. I'm a bit tied up in the PDFs at present to stop and look at that, but I did notice the above. It will need to have brackets round the conditions in order to compile:

if (_3d=True) and (template_info.keep_dims.turnout_info2.chairing_flag=False)

I will have a closer look later. :)

cheers,

Martin.
 
_______________
message ref: 11891
p.s. Steve

That could be written:

if _3d and NOT template_info.keep_dims.turnout_info2.chairing_flag

but I find it easier to read 5 years later with the =True and =False added, which then needs the brackets for multiple conditions.

Or even 5 minutes. :)

Martin.
 
_______________
message ref: 11892
Hi Martin,
Thanks for the info.

I have added the two extra tests that i mentioned, but using your syntax, into dxf_unit and compiled & tested ok.

Here is the result.

Good luck with the pdf's

Steve
 

Attachments

  • dxf_unit.pas
    690.3 KB · Views: 28
_______________
message ref: 11893
Hi Martin,
Here is the latest version of dfx_unit.
I have added more ReadFloat entries in the load section.
When I get time I will add corresponding Write Float entries to the save section, but for now the countryside beckons.
Steve
ps and it acts as a backup for my work!
 

Attachments

  • dxf_unit.pas
    701.3 KB · Views: 32
_______________
message ref: 11897
Hi Martin,

Attached latest version of dxf_unit, and a copy of the SK4 file it has produced.

It might make sense if we grouped the parameters by form, and top and tailed each form by a form marker . eg;-

<form_timber_sizes>
</form_timber_sizes>

<form_socket_size_clip_fit>
</form_socket_size_clip_fit>

Thus making it easier to find a particular saved setting when inspecting the SK4 file.

This is probably another one of my daft ideas generating more work for myself!

Regards Steve
 

Attachments

  • dxf_unit.pas
    715.2 KB · Views: 27
  • sbc_test.sk4
    8.2 KB · Views: 37
_______________
message ref: 11901
Hi Martin,

Attached latest version of dxf_unit, and a copy of the SK4 file it has produced.

It might make sense if we grouped the parameters by form, and top and tailed each form by a form marker . eg;-

<form_timber_sizes>
</form_timber_sizes>

<form_socket_size_clip_fit>
</form_socket_size_clip_fit>

Thus making it easier to find a particular saved setting when inspecting the SK4 file.

This is probably another one of my daft ideas generating more work for myself!

Regards Steve
@Steve_Cornford

Hi Steve,

That would be a lot of work creating additional XML nodes, and a lot of testing for reading and writing. At present everything is in a single flat DATA node. I doubt many folks will be inspecting or editing the SK4 files, mostly they will simply be saved and loaded.

Also you would need to make sure that the changes don't break any existing SK4 files which folks have saved.

But if you want to do it, that's fine by me. :) I'm not clear yet how we actually decide such things for a collaborative project?

Alternatively it should be possible to simply WriteString() with the marker strings. There would be no need to read them back, and this method wouldn't break existing SK4 files.

Also, I can see in xml_unit.pas that comments can be included in the file, but it's not clear how you add one at a specific place within it.

cheers,

Martin.
 
_______________
message ref: 11902
@nickom @NoIdea @Rusty @Alistair Ward @graeme @Steve_Cornford @James Walters @Phil G @Paul Boyd @Tim Adams

I have created a new forum section specifically for the Templot5 Git discussions and moved some of the posts there:

https://85a.uk/templot/club/index.php?forums/templot5-on-git.57/

A couple of days ago I uploaded (i.e. Committed and Pushed) some files to Git. Since then I've been working on the PDF and EMF exports and I have now uploaded the changed files to see what Git makes of them. It has created a multi-coloured diff display, but I have yet to learn what all the symbols mean. Or what to do with it.

We can continue here with the wider discussion about OpenTemplot2024 and posting the zip files.

The difference is that Templot5 is intended to become the public replacement for Templot2. OpenTemplot2024 is just the collection of files which anyone can use for any purpose they wish (within the open-source licence terms).

I hope that's a sensible distinction and doesn't just create even more confusion.



The EMF metafiles were needed for the PDF export, and I found myself re-working stuff that I did 5 years ago:

https://85a.uk/templot/archive/topics/topic_3545.php

I don't know where the time goes -- or how many boiled eggs it has needed to get from there to here. :)

Martin.
 
_______________
message ref: 11929
Hi Martin,

Here is my latest dxf_unit source.

Having performed a cross reference I found one mistake in previous version that meant I had two lines performing a
writefloat using "clip_top_width", and no line performing a writefloat "clip_top_length" , which i have now corrected.

Also I have added sections:-
// nails
// fdm shrinkage
// resin shrinkage

containing relevant parameters, which should help folks that have diverged from the default shrinkage settings & allow them to create a save file to be used for their 3D printing.

for now I will continue posting changed files here until i/we understand GIT more fully.

Steve
 

Attachments

  • dxf_unit.pas
    719.1 KB · Views: 23
_______________
message ref: 11935
Back
Top