sketchucation logo sketchucation
    • Login
    โ„น๏ธ Licensed Extensions | FredoBatch, ElevationProfile, FredoSketch, LayOps, MatSim and Pic2Shape will require license from Sept 1st More Info

    [Plugin] Hatchfaces (v1.8 beta) UPDATED 15-Dec-2012

    Scheduled Pinned Locked Moved Plugins
    360 Posts 41 Posters 228.5k Views 41 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • jolranJ Offline
      jolran
      last edited by

      Ahh, you mean multiple face selection? Yes I see, that will not work of course. ๐Ÿ˜•
      I don't see it as a big limitation that only 1 face could be processed at each time?
      Or faces on the same plane, wich is probably the most common case?

      Edges get drawn a bit irregular atm.


      crossed.jpg

      1 Reply Last reply Reply Quote 0
      • jolranJ Offline
        jolran
        last edited by

        If selecting face and edge I can only get an array, not the edge as an individual edge selection? ๐Ÿ˜ž
        Even if doing a ==Sketchup::Edge thingy..
        Must I use a selection observer for this?
        Would be fun if I could even try this method out, but stuck on basic things..

        1 Reply Last reply Reply Quote 0
        • TIGT Offline
          TIG Moderator
          last edited by

          No complications like observers needed.
          To pick one face and one edge from the selection use
          ss=model.selection face=nil edge=nil faces=[] edges=[] ss.each{|e| if e.class==Sketchup::Face faces << e end if e.class==Sketchup::Edge edges << e end } face=faces[0]if faces edge=edges[0]if edges
          This takes the first face and first edge it comes across in the selection and ignores all others [if there are any].
          You then need a trap if there's no face selected
          if not face UI.messagebox("Select a Face you dolt!") return nil end
          and
          ` if not edge

          choose 'edge' by other means or error message again

          endYou now process 'face' just the once and not 'each face in faces'... If you want to be thorough report the user has picked more than one face or edge if faces[1]
          UI.messagebox("Select ONE Face - only the 1st selected Face was processed - Twit!")
          return nil
          end
          if edges[1]
          UI.messagebox("Select either NO or ONE Edge - only the 1st selected Edge was used - Fool!")
          return nil
          end`
          etc etc...

          TIG

          1 Reply Last reply Reply Quote 0
          • jolranJ Offline
            jolran
            last edited by

            Ahhh ๐Ÿ˜ฎ Excellent! That certainly make more sence then the shiยฃ$y stuff I was working on.

            I will try this tomorrow, avec plaisire.

            Thank you TIG.

            1 Reply Last reply Reply Quote 0
            • jolranJ Offline
              jolran
              last edited by

              I think I will alter the "Tourette Syndrome style" prompts in the inputbox you recommended.

              1 Reply Last reply Reply Quote 0
              • TIGT Offline
                TIG Moderator
                last edited by

                They were intended as a 'joke' ๐Ÿ˜‰

                TIG

                1 Reply Last reply Reply Quote 0
                • jolranJ Offline
                  jolran
                  last edited by

                  No worries! ๐Ÿ˜„

                  1 Reply Last reply Reply Quote 0
                  • jolranJ Offline
                    jolran
                    last edited by

                    Well, it seams to be working a little better now. No promises though..

                    TIG's selection code works like a charm.
                    Just had to change pt and pt1 to pt=@edge.start.position, p1=@edge.end.position. And use ve=pt.vector_to(p1) as usual.
                    So now the hatching gets aligned to the selected edge..

                    Maybe it would be a good idea to have the plugin run as usual(axis mode) if NO edge is selected? Some if statements when edge is NOT selected or so..

                    That way one still would have the possibility to alter several faces should one wish so.
                    Anyway if no objections I might do the update on this?


                    for ver1.5.jpg

                    1 Reply Last reply Reply Quote 0
                    • jolranJ Offline
                      jolran
                      last edited by

                      eekk, don't know what I'm talking about ๐Ÿ‘Š It does multiple faces as long 1 edge is selected and the face is
                      connected to that edge.

                      1 Reply Last reply Reply Quote 0
                      • S Offline
                        sergey2402
                        last edited by

                        Could you upload version 1.5 to test it?

                        1 Reply Last reply Reply Quote 0
                        • jolranJ Offline
                          jolran
                          last edited by

                          Yep. This evening.

                          I was planning on adding the crosshathcing as well. But it's not working yet.
                          Anyway I will upload ver 1.5 anyway, with or without crosshatching.

                          1 Reply Last reply Reply Quote 0
                          • jolranJ Offline
                            jolran
                            last edited by

                            1.5 beta uploaded!

                            You might as well play with it. An Edge and a Face must be selected. The hatches will be created clockwise according to the edge. Hopefully ๐Ÿ˜„

                            I will continue with the crosshatching...

                            1 Reply Last reply Reply Quote 0
                            • jolranJ Offline
                              jolran
                              last edited by

                              Ooops!! ๐Ÿ˜ฒ The "Hatchfaces" menu item in Draw menu isent finished yet. Will fix that later...
                              Should not affect usage with icons..

                              1 Reply Last reply Reply Quote 0
                              • jolranJ Offline
                                jolran
                                last edited by

                                Ok. ver 1.6 beta added.

                                http://forums.sketchucation.com/viewtopic.php?f=323&t=38637&p=341461#p341461

                                Crosshatching should be working. It creates the hatches in 2 groups inside a parentgroup, should you wish crosshatching.

                                Had to rewrite parts into methods. TIG's been "directing" me more and finding problems than "giving" me code in this version. So I had to suffer and learn a little bit more ๐Ÿ˜„ Besides the script is getting longer so it takes more time to debug from his part...

                                That said! Beware that this script could surely be optimized, and I'll gladely take tips about how to.
                                I do feel it's a bit ugly script with all the methodcalling at the end.
                                Just remember that the temp face(face_clone) method must be separate. So it can be used if there are possibilities to
                                do other types of hatchpattern, and implement them on the face_clone.

                                Thanks to TIG, again for tutoring ๐Ÿ‘

                                1 Reply Last reply Reply Quote 0
                                • TIGT Offline
                                  TIG Moderator
                                  last edited by

                                  Great it's getting there...
                                  The dialog's values aren't getting remembered.
                                  Make variables like angle/spacing/cross_alt into @ types so they get remembered for next time... Otherwise you need to fill in the dialog each time.
                                  Use this too
                                  angle2=@cross_angle angle2=-@angle if not angle2
                                  This way the dialogs value is then the same as last time OR -@angle
                                  similar for spacing etc
                                  Also the menu item can reuse the cmd0 command rather that make another!
                                  Then it uses the same name as the Toolbar command...

                                  TIG

                                  1 Reply Last reply Reply Quote 0
                                  • jolranJ Offline
                                    jolran
                                    last edited by

                                    Thanks for the feedback TIG!

                                    I will try to fix those things.

                                    You don't think there are any problems calling all those methods at the end? I mean it works, but feels strange.

                                    1 Reply Last reply Reply Quote 0
                                    • K Offline
                                      kyyu
                                      last edited by

                                      jolran, some feedback:

                                      1. Your undo doesn't undo in a single step, most notable you leave behind an empty group & layer.
                                      2. You have your methods inside the main method?
                                      3. I consider this to be not a beginner's plugin, especailly if you will continue to add new features. If you are still at the block level and just moving unchanging blocks of code around, you will have lots of problems. You have to understand it from the line level and change it at will. Condense lines, delete lines and rename variables so they are consistant and have personal meaning.
                                      4. Your indenting of the code is atrocious, unless it's my setting in notepad++?

                                      An quick example of how I would rewrite it. I tweak everything I could, like if it was my own plugin. I went back to the old way without having to select a line and changed other stuff. Doesn't matter. The goal is to simplify and compartimentalize. Make it consistant, and easy to follow. Then its easy to modify, later. I include a screen grab. The idea is for you, to do your own version. Also, you can see the indents. The image is too tall to post, so here it is in a zip file:
                                      hatchfaces_rewrite_png.zip

                                      1 Reply Last reply Reply Quote 0
                                      • jolranJ Offline
                                        jolran
                                        last edited by

                                        Hi Kyyu.

                                        1. yes, thanks. I noticed that. However removing layer is not so good if doing the 2nd+ hatch?
                                        2. ? The cmd is calling the self.hatchfaces method, not the module? Ok I will have a look.
                                        3. So you mean I should stop developing it until I have matured?
                                        4. insulting word, but maybe true.
                                          Is the code example you provided tested?

                                        Like I've said before you have to realize that this plugin is not aimed at linehatches only, and it's still beta.
                                        Everyone knows what beta means......If the plugin is not good enough for publishing I can remove it and post when I "feel" ready? Feel's like I have broken some unwritten rule here..

                                        IF implementing other MODULES, with ex patterns of insulation etc AS modules the code structure can of course not remain like this. And you have provided intersection not inside a method, wich can be troublesome if I will have to reuse it for the other modules. Orders matters no?

                                        I'm experimenting right now with possibilities for other patterns. I see no reson to rewrite the whole code structure until I know where this plugin's heading. Might fix TIG's bugspots and your group and layer undo issues.

                                        I appreciate you effort and will take your advice into consideration.

                                        edited: Hmm no, intersection is inside a method. OK thats better. Difficult to see without having the code in Notepad.
                                        But I still need intersection independent of the linehatching.
                                        Also. Remember, each group.entities sent to hatching will need a face for intersection! So in order to keep intersection apart from hatchingmethod there is a need for a face_clone method.
                                        However I do like the way you call the methods. That I will work on.

                                        1 Reply Last reply Reply Quote 0
                                        • K Offline
                                          kyyu
                                          last edited by

                                          Hi jolran,

                                          @unknownuser said:

                                          1. So you mean I should stop developing it until I have matured?

                                          @unknownuser said:

                                          Everyone knows what beta means......If the plugin is not good enough for publishing I can remove it and post when I "feel" ready? Feel's like I have broken some unwritten rule here..

                                          No, I am not telling you to stop developing. And no I don't want you to remove it.
                                          You should not take offense, as I am just trying to give you the best advice I can. I debated if I should say anything at all. So don't take it the wrong way and be discouraged.

                                          You are right. I don't know what you are going. Anyways, I hope you see something in my example that helps you.

                                          @unknownuser said:

                                          Is the code example you provided tested?

                                          Yes, it works 100%.

                                          -Kwok

                                          1 Reply Last reply Reply Quote 0
                                          • jolranJ Offline
                                            jolran
                                            last edited by

                                            Ok, ok. No worries... English is not my native language so I might have missunderstood some things.
                                            And I'm a little tempera(mental) ๐Ÿ˜„

                                            @unknownuser said:

                                            So you mean I should stop developing it until I have matured?

                                            Total missunderstanding, sorry.

                                            @unknownuser said:

                                            I debated if I should say anything at all

                                            I do apreciate you advice though!! Really. Don't hold back!
                                            I might have to argument against some of the advice, if there are things behind the scenes that you are not aware about that could change the scenario. That doesent mean your outcome is not apreciated. I WILL use your codeexample further on.

                                            All the best.

                                            1 Reply Last reply Reply Quote 0
                                            • 1
                                            • 2
                                            • 5
                                            • 6
                                            • 7
                                            • 8
                                            • 9
                                            • 17
                                            • 18
                                            • 7 / 18
                                            • First post
                                              Last post
                                            Buy SketchPlus
                                            Buy SUbD
                                            Buy WrapR
                                            Buy eBook
                                            Buy Modelur
                                            Buy Vertex Tools
                                            Buy SketchCuisine
                                            Buy FormFonts

                                            Advertisement