prusa3d / PrusaSlicer

G-code generator for 3D printers (RepRap, Makerbot, Ultimaker etc.)
https://www.prusa3d.com/prusaslicer/
GNU Affero General Public License v3.0
7.73k stars 1.93k forks source link

Offset Print area origin doesn't match with custom bed model origin. #3798

Open photodude opened 4 years ago

photodude commented 4 years ago

Version

Build: PrusaSlicer-2.1.1+win64-201912101512 and Build: PrusaSlicer-2.2.0-rc2+win64-202003071138

Operating system type + version

Operating System: Windows System Architecture: 64 bit Windows Version: Windows 10 (build 18363), 64-bit edition Total RAM size [MB]: 34,307MB OpenGL installation GL version: 4.6.0 NVIDIA 441.87 Vendor: NVIDIA Corporation Renderer: GeForce GTX 1070/PCIe/SSE2 GLSL version: 4.60 NVIDIA

3D printer brand / version + firmware version (if known)

BIBO2 Stock model with 5015 part cooling blower and PEI sheet build surface BIBO MFG provided stock firmware based on the Marlin 1.0.0 shaqFoo Ditto printing fork

Behavior

When using a specialized offset print area smaller than the printer bed model for ditto printing (copy/duplication printing with a dual extruder), the specified offset print area origin does not line up with bed model origin. The print area center lines up with the bed model center.

  1. create a print area 33mm wide in X and 186mm in Y
  2. set origin to right of print area (+33mm x)
  3. create a bed model 214mm x and 214mm y
  4. observe print area origin relative to bed model center

Is this a new feature request? if needed, an option to offset the offset print area to match the origin of the bed model

Ditto printing printer configuration and model can be found in my Github Repo https://github.com/photodude/BIBO2-PrusaSlicer

Related issues

3560 for creation of vendor profile instructions

bubnikv commented 4 years ago

Did you resolve this issue? By the way, your profile is now in the master and we did some more final touches to it, you may want to update the wiki.

photodude commented 4 years ago

@bubnikv I don't have a solution to this issue with the ditto printing restricted print areas and the bed model.

Awesome to hear that the profile is merged. I'll see if I can get to a few changes I mentioned in the PR https://github.com/photodude/BIBO2-PrusaSlicer/pull/4#issuecomment-597162948 sometime this afternoon. I'll see about updating the wiki with notes on printer variants in the method @rtyr mentioned.

photodude commented 4 years ago

@bubnikv My supposition on this issue is that it's related to an assumption in the bed model and bed texture rendering positions in this file https://github.com/prusa3d/PrusaSlicer/blob/master/src/slic3r/GUI/3DBed.cpp GUI C++ is something new to me so It's going to take some time for me to parse what things mean to see if that's where the source of the issue is.

bubnikv commented 4 years ago

@enricoturri1966 implemented alignment of the STL to the image by aligning center of one to the center of the other I believe.

photodude commented 4 years ago

@bubnikv Yes, I think the alignment @enricoturri1966 implemented is the source of this. I'm leaning towards it being in this section of code https://github.com/prusa3d/PrusaSlicer/blob/master/src/slic3r/GUI/3DBed.cpp#L543-L567 probibly need some kind of condition for cases where the bed model and the print_area/bed_texture are not the same size. but it may be in the texture side of the code.

Initial thoughts on cases that need to be covered or could be covered.

  1. bed model and texture are the same size
    • existing case
  2. texture/print_area are smaller than the bed model with offset origin
    • this is the case with the ditto printing, the ditto printing area is either the left or right of bed model origin
  3. texture/print_area are smaller than the bed model with offset origin
    • similar to 2 but the offset for the print area origin is far from the bed center (this is more of a thought of what could be set up, but I don't know of anything that does have origins this way)

I'll have to think on how to to address adding that second case