USER FORUM
(you are viewing a thread; or go back to list of threads)
Problem with Vertical Constraint (by Tom Sato)
Hello,
I'm experimenting with the dll and I've created a very simple experiment:
Added 2 points (Point1 and Point2)
Added Segment defined by Point1 and Point2
Add Vertical Constraint for Segment
I am able to move Point2 horizontally and the entire line is dragged maintaining the vertical constraint.
However, I can't seem to move Point1 the same way. It moves vertically, but it refuses to move horizontally.
When I try this in the SolveSpace application, it works just fine, but not in my app which relies on the dll. It's such a simple implementation, but I seem to be missing something. Any help would be greatly appreciated.
Thanks,
Tom
I'm experimenting with the dll and I've created a very simple experiment:
Added 2 points (Point1 and Point2)
Added Segment defined by Point1 and Point2
Add Vertical Constraint for Segment
I am able to move Point2 horizontally and the entire line is dragged maintaining the vertical constraint.
However, I can't seem to move Point1 the same way. It moves vertically, but it refuses to move horizontally.
When I try this in the SolveSpace application, it works just fine, but not in my app which relies on the dll. It's such a simple implementation, but I seem to be missing something. Any help would be greatly appreciated.
Thanks,
Tom
(no subject) (by Jonathan Westhues)
Are you sure you're setting sys.dragged[] correctly? That will determine which parameters are left (as much as possible) at their initial values.
(no subject) (by Tom Sato)
Many thanks for your input.
I created a very simple test and it works fine. There must be something wrong with my implementation. Here's the simplte test:
Dim Origin As Point3d = NewPoint3d(g, 0.0, 0.0, 0.0)
Dim Normal As Normal3d = NewNormal3d(g, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0)
Dim WP As Workplane = NewWorkplane(g, Origin, Normal)
Dim P1 As Point2d = NewPoint2d(g, WP, 0.0, 0.0)
Dim P2 As Point2d = NewPoint2d(g, WP, 0.1, 1.0)
Dim S1 As LineSegment = NewLineSegment(g, WP, P1, P2)
AddConstraintVertical(1, g, WP, S1.H)
Solve(g, P2, True)
Debug.WriteLine(P1.GetU & " " & P1.GetV)
Debug.WriteLine(P2.GetU & " " & P2.GetV)
By setting Drag0 to p1 or p2, GetU would be 0.0 or 0.1, which's the desired behavior. I'll trouble shoot my code to see what I'm doing wrong.
I created a very simple test and it works fine. There must be something wrong with my implementation. Here's the simplte test:
Dim Origin As Point3d = NewPoint3d(g, 0.0, 0.0, 0.0)
Dim Normal As Normal3d = NewNormal3d(g, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0)
Dim WP As Workplane = NewWorkplane(g, Origin, Normal)
Dim P1 As Point2d = NewPoint2d(g, WP, 0.0, 0.0)
Dim P2 As Point2d = NewPoint2d(g, WP, 0.1, 1.0)
Dim S1 As LineSegment = NewLineSegment(g, WP, P1, P2)
AddConstraintVertical(1, g, WP, S1.H)
Solve(g, P2, True)
Debug.WriteLine(P1.GetU & " " & P1.GetV)
Debug.WriteLine(P2.GetU & " " & P2.GetV)
By setting Drag0 to p1 or p2, GetU would be 0.0 or 0.1, which's the desired behavior. I'll trouble shoot my code to see what I'm doing wrong.
(no subject) (by Tom Sato)
I found the problem. It was due to my misunderstanding of the meaning of the dragged0..dragged3 parameters. I thought each was a entityID (so I used the first and ignored the rest) when in fact they are param ids. Teaches me to read the documentation (and comments) better. Many thanks.
Post a reply to this comment: