MoI discussion forum
MoI discussion forum

Full Version: V5 Wish List

Show messages:  1-6  …  367-386  387-406  407-426  427-446  447-466  467-486  487-506  …  627-639

From: Michael Gibson
21 Sep 2022   [#427] In reply to [#426]
Hi Bengt,

re:
> Perhaps together with a posibility to numerically change the view. I like the control in Teamcenter visualisation.

There are currently some numeric controls for view angles under Options > View > 3D View angles.


> In snapshot, it’d be cool to have an indication of what slot is in use? And maybe possibility to name
> them, name showing up like a tooltip or somthing. Also is it doable to have it remember what objects
> are visible and hidden?

That snapshot function isn't a regular part of MoI, it's from Max Smirnov's CustomUI mod. I don't think he's developing it any further though.

In the future I do want to work on some kind of save/restore state mechanism though.

- Michael
From: pressure (PEER)
4 Oct 2022   [#428] In reply to [#420]
Michael,

I have two scripting requests:

1) A way to get the point at the center of an object. That is, the point that's shown when Object Snap > Center is on. In other words, something along the lines of propertiesPanel.radius. This is for changing the UV directions of a spherical face for hatching.

2) Harmonize the 5 bounding box methods by adding an optional coordinate frame parameter that defaults to the active cplane. Now, the properties panel bounding boxes are aligned with the cplane, but the others are aligned with world coordinates:
GeomObject.getBoundingBox()
ObjectList.getBoundingBox()
ObjectList.getHighAccuracyBoundingBox()
From: Michael Gibson
4 Oct 2022   [#429] In reply to [#428]
Hi Peer,

re:
> 1) A way to get the point at the center of an object. That is, the point that's shown when Object Snap > Center
> is on. In other words, something along the lines of propertiesPanel.radius. This is for changing the UV directions
> of a spherical face for hatching.

There isn't an object snap for the center of a face that is a sphere surface. The one that you get on a regular sphere comes from the center point of its arc edge curve.

I'll see about adding in some script access for conic sections on faces similar to what there is for curves though, and about adding in a coordinate frame optional parameter for bounding boxes.

- Michael
From: pressure (PEER)
5 Oct 2022   [#430] In reply to [#429]
Michael,

I noticed center snapping on a full sphere, 1/4, and 1/8, and that propertiesPanel.hasRadius seems to be true for any fragment of a sphere, but I guess those are special cases. Thanks for explaining that the center snap point is coming from trim curves.

re:
> adding in some script access for conic sections on faces

I don't understand what this means. To me a conic section means a curve.

The problem I'm trying to solve is getting the UV directions on a spherical face to go in the directions that I want. My plan was select the face, get the radius and center, cache the trim curves of the original face, generate a sphere with the same radius and center but with seam orientation picked with something like an orientation picker, remove the original face, trim this new sphere with the cached trim curves, and then join.

I guess I could draw 2 pointObjects snapped to the surface of the face, dropPoint to get uv coordinate points, evaluate normal at each of the uv points, extend a line along each normal, and find the intersection = center. Is that the best way?
From: bemfarmer
5 Oct 2022   [#431] In reply to [#430]
Hi Peer,

Do you have an example .3dm of the surface?

There is a shortcut to mark the center point of a curve.

Conics include circle, ellipse, parabola, hyperbola, and line?

- Brian
From: pressure (PEER)
5 Oct 2022   [#432] In reply to [#431]
Brian,

See attached. The surface is spherical. I want to get the point that's marked with a pointObject. In other words, the center of curvature.

Attachments:
sphere_center.3dm


From: bemfarmer
5 Oct 2022   [#433] In reply to [#432]
For a Spherical cap:
https://en.wikipedia.org/wiki/Spherical_cap

Let d = (r-h)
d = sqrt(r*r - a*a)
r = (a*a + h*h) / 2*h
theta = arcsin(a/r)

- Brian
Hasty trig math, check for errors:-)
From: Michael Gibson
5 Oct 2022   [#434] In reply to [#430]
Hi Peer,

> I don't understand what this means. To me a conic section means a curve.

Yes you're correct, sorry I used the wrong term there.


> I guess I could draw 2 pointObjects snapped to the surface of the face, dropPoint to
> get uv coordinate points, evaluate normal at each of the uv points, extend a line
> along each normal, and find the intersection = center. Is that the best way?

Yes, intersecting 2 surface normals would be a way to get the center currently.

You can get 2 UV coordinates using the domain boundaries instead of dropping points.

var minpt = face.domainMin; // 2d point for UV domain min corner.
var maxpt = face.domainMax; // 2d point for UV domain max corner.

Just don't use the min and the max both directly because those will be at each pole and those normals will be colinear.

So maybe something like 1/3 between them for one point and 2/3 between for the other one.

- Michael
From: pressure (PEER)
5 Oct 2022   [#435] In reply to [#434]
Thanks Michael. domainMin/Max sound very promising. I'll give that approach a try.
From: bemfarmer
5 Oct 2022   [#436]
A way to get two points on the surface:
Select the edge of the cap.
Run MarkCurveEnd for point 1
Run MarkCurveMidpoint for point 2
Run some script to get the two normals, and intersect.

The two normals can be manually found.

So is a utility script to be created for the 2 UV coordinates method?

- Brian
From: bemfarmer
5 Oct 2022   [#437]
Array endpoint of edge to edge curve, with 4 points.
This establishes two perpendicular lines, and a plane.
The normal to the two lines, through the Center point of line through endpoint and midpoint, passes through the apex of the cap, and the centerpoint of the sphere, and allows calculation of "h", "a", and "r".

https://web.ma.utexas.edu/users/m408m/Display12-5-4.shtml#:~:text=The%20normal%20to%20the%20plane,%C3%97(s%E2%88%92b).

Enough math for tonight.

- Brian
From: Michael Gibson
5 Oct 2022   [#438] In reply to [#436]
Hi Brian,

re:
> So is a utility script to be created for the 2 UV coordinates method?

Something like this:
code:
var face;

<... get face object ...>

var uv_min = face.domainMin;
var uv_max = face.domainMax;

function Lerp( t, low, high )
{
    return low + ((high - low) * t);
}

function LerpUVPoint( t, ptA, ptB )
{
    return { x : Lerp( t, ptA.x, ptB.x), y : Lerp( t, ptA.y, ptB.y ) }
}

var uv_a = LerpUVPoint( 0.3, uv_min, uv_max );
var uv_b = LerpUVPoint( 0.6, uv_min, uv_max );

var factory = moi.command.createFactory( 'point' );
factory.setInput( 0, face.evaluatePoint( uv_a ) );
factory.commit();


From: bemfarmer
6 Oct 2022   [#439] In reply to [#438]
Thank you Michael

The _ChangeHole script has Face selection code...

I might play with it after work...

- Brian
From: Elang
18 Nov 2022   [#440]
Hello, Michael.

Would you kindly include SPIRO PATH to Moi v5's Draw Curve > Spiro Path? It is similar to the one in InkScape. Since it guarantees the formation of lovely curves, I think it would greatly strengthen Moi.

I ask because I frequently utilize Moi to "trace" bitmap images, notably logos, into vectors, which are then transformed into 3D logos.

Thank you very much.
From: Michael Gibson
18 Nov 2022   [#441] In reply to [#440]
Hi Elang, previously due to licensing and patents it was only possible to include Spiro in open source programs, not in commercial programs like MoI.

I think the licensing has changed though and it may be possible to use it outside of open source now.

I'll put it on my list to investigate, it might not make it in for the v5 release though.

- Michael
From: bemfarmer
18 Nov 2022   [#442] In reply to [#440]
There is a Clothoid script.

For "tracing", the Clothoid script can be used.
But using a pair of tangents, and the Blend command works very well, perhaps better than the Clothoid method, IMHO.
(repeat Blend with multiple tangent pairs.) The History effect on Blend is also handy.

https://raphlinus.github.io/curves/2019/05/10/spline-licensing-update.html
The Raph Levien spiro patent was placed in public domain ~ 2019, per above link. Legalities?
There was talk on the forum many years ago...

- Brian

https://graphicdesign.stackexchange.com/questions/76007/what-is-the-math-governing-the-shape-of-inkscapes-spiro-paths

As I recall, the Clothoid script was based upon a Paper, and used advanced math and programming, even calculus programming...
From: making5tuff
25 Nov 2022   [#443]
If we're talking wish list items, I would love expanded formatting distance display. I use Moi for woodworking, and it's easiest when working with tape measures and other woodworking rulers to stay in inches, with fractions.

It'd be great to have the formatting distance displace to have Decimal, Feet & Inches and Inches. Or "Decimal with Fractions".
From: blackboard
25 Nov 2022   [#444]
Hi, maybe u can add to moi opportunity to drag points of solids like in rhinoceros?
From: Michael Gibson
25 Nov 2022   [#445] In reply to [#444]
Hi blackboard,

re:
> maybe u can add to moi opportunity to drag points of solids like in rhinoceros?

It usually doesn't work very well to try and do this with solids made up of trimmed NURBS surfaces. There are lots of problems with this feature area in Rhino where it generates messy results in many cases.

If you want to model by dragging around surface points it's better to do sub-d modeling for that rather than CAD modeling.

- Michael
From: Larry Fahnoe (FAHNOE)
6 Dec 2022   [#446]
Forgive me Master for I know not what I ask… ;-}

An MoI object dumper usable in a script. Maybe akin to perl’s Data::Dumper, something that returns a string describing the MoI object passed? Perhaps a simplified description along the lines of the Type information provided by clicking on the UI’s Details...? Recursive object dumping would be nice but probably too much to hope for. Thinking specifically about descriptions of MoI's objects, not a generalized javascript object dump.

moi.ui.alert( moi.dump( obj));

When I’m writing and debugging a script, a common challenge is figuring out what I’ve just done to abuse MoI’s object model & why my attempts to get an object's property or method to work are blowing up--typically because I've used an object incorrectly. When things go awry I start by looking at what I've just added, and then assuming it isn't a syntax error, I begin adding moi.ui.alert() messages and wrapping suspect blocks in try {} catch( e) { moi.ui.alert( 'error: ' + e) }. Having the ability to dump object information would be another very useful assist I think.

--Larry

Show messages:  1-6  …  367-386  387-406  407-426  427-446  447-466  467-486  487-506  …  627-639