sketchucation logo sketchucation
    • Login
    1. Home
    2. Anton_S
    3. Posts
    Oops, your profile's looking a bit empty! To help us tailor your experience, please fill in key details like your SketchUp version, skill level, operating system, and more. Update and save your info on your profile page today!
    ⚠️ Important | Libfredo 15.6b introduces important bugfixes for Fredo's Extensions Update
    A
    Offline
    • Profile
    • Following 0
    • Followers 7
    • Topics 52
    • Posts 1,261
    • Groups 2

    Posts

    Recent Best Controversial
    • Ruby rbconfig.rb

      Is ruby rbconfig.rb file the same in all operating systems? Or is it different?

      posted in Developers' Forum
      A
      Anton_S
    • RE: Colors and values

      I have something here:

      def generate_colors(ratio, colors=[])
        return 0 if ratio>1 or colors.length==0
        ratio=ratio.abs
        cr=(colors.length-1)*ratio #color ratio
        dec=cr-cr.to_i
        return colors[cr] if dec==0 #If no decimal points, then return the specified color in array.
        a=colors[cr.to_i]
        b=colors[cr.ceil]
        color=[((b[0]-a[0])*dec+a[0]).round, ((b[1]-a[1])*dec+a[1]).round, ((b[2]-a[2])*dec+a[2]).round]
        return color unless a[3] and b[3] #if a[3]==nil or b[3]==nil
        color[3]=((b[3].to_i-a[3].to_i)*dec+a[3].to_i).round
        return color
       end
      

      Example:
      generate_colors(0.4, [[255,0,0], [0,255,0], [0,0,255], [255,255,0], [255,0,255]])
      returns: [0, 102, 153]
      You just need to fill in main colors and it will generate it out.

      posted in Developers' Forum
      A
      Anton_S
    • RE: Screen Coords

      Okay, Thanks πŸ˜„

      posted in Developers' Forum
      A
      Anton_S
    • RE: SU 9 Wishlist

      I want sketchup text options(like font, size, type), to be also included in sketchup api, so we could style-up our plugins. Agree? πŸ‘

      Here are the two texts that are wanted to be updated:
      Sketchup.active_model.add_note and Sketchup.active_model.entities.add_text

      posted in SketchUp Feature Requests
      A
      Anton_S
    • RE: Screen Coords

      @chris fullmer said:

      But again, what is it that you really want? You're asking about how to get the screen coordinates. Well, use the SketchUp API. But what about that is not a good enough answer? What more do you need it to do?

      Rightnow I'm good with sketchup and I hopely mastered the API. πŸ€“

      If I would wan't something to sketchup, I will post to SU[n] wishes.

      What I wanted was just some more skills on perspective drawings. Sketchup doesn't has to do with what I want, it's an example, which has a defined function that could clone 3d pos to 2d. The defined function it self has parameters, which are view and 3d pos. I was trying to learn what code or math calculations the function does to clone the 3d coordinates to 2d coordinates.

      Chris, is that clear enough?

      posted in Developers' Forum
      A
      Anton_S
    • RE: Screen Coords

      @chris fullmer said:

      What are you doing the 3d programming in?

      Rightnow, in Sketchup. Later, in other 3d space softwares.

      posted in Developers' Forum
      A
      Anton_S
    • RE: Screen Coords

      Its not really about sketchup, but I just want to write my own function that would convert 3d pos to 2d by having parameter as: camera pos(eye), camera target, camera up and view type(perspective or parallel)

      I still don't have too much math about 3d space and perspective stuff, so I decided to ask here for help. A good url to some learning would also help.

      posted in Developers' Forum
      A
      Anton_S
    • Screen Coords

      Does anyone knows or has the source code for function view.screen_coords or not the actual code, but something similiar to that?

      I want to examine how it works and more stuff. I have looked in blender source code as someone previously sugested, but haven't found the function that could convert 3d pos to screen coords.

      posted in Developers' Forum
      A
      Anton_S
    • RE: Need help with structures in callbacks

      @thomthom said:

      @dan rathbun said:

      And it's Windows only. We really need a solution that works on both platforms (Mac and Windows,) and that means it needs to be built into the Sketchup API by Google.

      That depends if he is aiming to support both platforms...

      Well, yes, I do want to support those for both platforms, but its just a starting test for platform that I'm using. And its not I'm the only one who want's that, I know there is much more people that would also want that ability in their plugins. So, yes after a solution to this topic, the code will be extended into more abilities of using on other platforms.

      @dan rathbun said:

      Including a library file (Win32,) in the global ObjectSpace is a big no no. Your code needs to be wrapped within a module.
      BIG Thanks Dan πŸ˜„ This thing was bugging me all the time I've need to wtite a code. This was a thing I needed to be sure of.

      @dan rathbun said:

      If you look at some of the pure Ruby source in Dan Berger's windows-pr package, you'll come across examples of accessing C structures from Ruby using Array.pack and String.unpack
      πŸ‘ πŸ‘ πŸ‘
      Thanks πŸ˜„, think this is a solution. I no doubt, WILL examine the pakage!!!

      posted in Developers' Forum
      A
      Anton_S
    • RE: Need help with structures in callbacks

      For some reasons I don't get replies πŸ˜• , does this topic makes sense>?

      posted in Developers' Forum
      A
      Anton_S
    • RE: Start/commit_operation

      Well I don't know if there is the limit or not, but so far I never experienced problems with start and commit operation. Did you state the right arguments for the start operation? If did and still doesn't work then give more info like an example.

      posted in Developers' Forum
      A
      Anton_S
    • Need help with structures in callbacks

      Can win32 api callback function return structures?
      In my script it only return's pointer to the structure, but not the whole structure.
      Script:

      require "Sketchup.rb"
      require "win32/api.rb" #version 1.4.8 for ruby 1.8.x or 1.9.x
      include Win32
      
      SetWindowsHookEx=API.new('SetWindowsHookEx', 'IKII', 'I', 'User32') #http://msdn.microsoft.com/en-us/library/ms644990(VS.85).aspx
      UnhookWindowsHookEx=API.new('UnhookWindowsHookEx', 'I', 'I', 'User32') #http://msdn.microsoft.com/en-us/library/ms644993(v=VS.85).aspx
      GetCurrentThreadId=API.new('GetCurrentThreadId', 'V', 'I', 'Kernel32') #http://msdn.microsoft.com/en-us/library/ms683183(VS.85).aspx
      GetModuleHandle=API.new('GetModuleHandle', 'V', 'I', 'Kernel32') #http://msdn.microsoft.com/en-us/library/ms683199(v=VS.85).aspx
      
      $inputText=[nil, [], 0]
      
      def logLine(str, lines=40)
       $inputText[0]=Sketchup.active_model.add_note("Sketchup Hook Procedure", 0.01, 0.2) if ($inputText[0]==nil or $inputText[0].deleted?)
       $inputText[1].push(str)
       $inputText[1][0,($inputText[1].length-lines)]=nil if $inputText[1].length>lines
       $inputText[0].text=$inputText[1].join("\n")
      end
      
      class LowLevelMouseHookProc
       @@hhk=nil
       @@lowLevelMouseProc=API;;Callback.new("ILP", 'I'){|nCode, wParam, p| #http://msdn.microsoft.com/en-us/library/ms644986(v=VS.85).aspx
        param=[p[0], p[1], p[2], p[3], p[4], p[5], p[6], p[7], p[8], p[9]]
        #MSLLHOOKSTRUCT; http://msdn.microsoft.com/en-us/library/ms644970(v=VS.85).aspx
        x=p[0].to_i + (p[1].to_i<<8) + (p[2].to_i<<16) + (p[3].to_i<<24)
        y=p[4].to_i + (p[5].to_i<<8) + (p[6].to_i<<16) + (p[7].to_i<<24)
        mouseData=p[8].to_i + (p[9].to_i<<8) + (p[10].to_i<<16) + (p[11].to_i<<24)
        $inputText[2]+=1
        logLine("#{$inputText[2]} code; #{nCode} wParam; #{wParam} lParam; #{param.inspect} x; #{x} y; #{y} mouseData; #{mouseData}")
        nCode #proccess the message as it states to proccess
       }
       def setHook(hMod=0, threadID=0)
        UnhookWindowsHookEx.call(@@hhk) if @@hhk #First, if exists then unhook the hook before setting it again.
        @@hhk=SetWindowsHookEx.call(14, @@lowLevelMouseProc, hMod, threadID)
       end
       def unhook()
        UnhookWindowsHookEx.call(@@hhk) if @@hhk
        @@hhk=nil
       end
      end
      
      class MyAPPObserver < Sketchup;;AppObserver #Need to use that because it's highly recommended to unhook the procedure.
       def onQuit() #Will unhook it when sketchup will be closed
        $lowLevelMouseProc.unhook
       end
      end
      
      Sketchup.add_observer(MyAPPObserver.new)
      $lowLevelMouseProc=LowLevelMouseHookProc.new
      threadID=GetCurrentThreadId.call
      hMod=GetModuleHandle.call
      
      file_name=File.basename(__FILE__)
      unless file_loaded?(file_name)
       $procState=0
       submenu=UI.menu("Plugins")
       item=submenu.add_item("LowLevelMouseHookProc"){
        if $procState==0
         $procState=1
         $lowLevelMouseProc.setHook(hMod) #Since 'lowLevel' stands for global or module handle then it will work only on mudule handle.
        else
         $procState=0
         $lowLevelMouseProc.unhook
         $inputText[0].erase! unless ($inputText[0]==nil or $inputText[0].deleted?)
         $inputText=[nil, [], 0]
        end
       }
       submenu.set_validation_proc(item){if $procState==0 then MF_UNCHECKED else MF_CHECKED end}
       file_loaded(file_name)
      end
      

      Here's some result of what I get:

      22 code; 0 msg; 522 lParam; [31, 1, nil, nil, nil, nil, nil, nil, nil, nil] x; 287 y; 0 mouseData; 0
      23 code; 0 msg; 513 lParam; [31, 1, nil, nil, nil, nil, nil, nil, nil, nil] x; 287 y; 0 mouseData; 0
      24 code; 0 msg; 514 lParam; [31, 1, nil, nil, nil, nil, nil, nil, nil, nil] x; 287 y; 0 mouseData; 0
      25 code; 0 msg; 513 lParam; [31, 1, nil, nil, nil, nil, nil, nil, nil, nil] x; 287 y; 0 mouseData; 0
      26 code; 0 msg; 514 lParam; [31, 1, nil, nil, nil, nil, nil, nil, nil, nil] x; 287 y; 0 mouseData; 0
      27 code; 0 msg; 516 lParam; [31, 1, nil, nil, nil, nil, nil, nil, nil, nil] x; 287 y; 0 mouseData; 0
      28 code; 0 msg; 517 lParam; [31, 1, nil, nil, nil, nil, nil, nil, nil, nil] x; 287 y; 0 mouseData; 0
      29 code; 0 msg; 513 lParam; [31, 1, nil, nil, nil, nil, nil, nil, nil, nil] x; 287 y; 0 mouseData; 0
      30 code; 0 msg; 514 lParam; [31, 1, nil, nil, nil, nil, nil, nil, nil, nil] x; 287 y; 0 mouseData; 0
      31 code; 0 msg; 516 lParam; [31, 1, nil, nil, nil, nil, nil, nil, nil, nil] x; 287 y; 0 mouseData; 0
      32 code; 0 msg; 517 lParam; [31, 1, nil, nil, nil, nil, nil, nil, nil, nil] x; 287 y; 0 mouseData; 0
      33 code; 0 msg; 512 lParam; [31, 1, nil, nil, nil, nil, nil, nil, nil, nil] x; 287 y; 0 mouseData; 0
      34 code; 0 msg; 512 lParam; [34, 1, nil, nil, nil, nil, nil, nil, nil, nil] x; 290 y; 0 mouseData; 0
      35 code; 0 msg; 512 lParam; [39, 1, nil, nil, nil, nil, nil, nil, nil, nil] x; 295 y; 0 mouseData; 0
      36 code; 0 msg; 512 lParam; [46, 1, nil, nil, nil, nil, nil, nil, nil, nil] x; 302 y; 0 mouseData; 0
      37 code; 0 msg; 512 lParam; [53, 1, nil, nil, nil, nil, nil, nil, nil, nil] x; 309 y; 0 mouseData; 0
      38 code; 0 msg; 512 lParam; [55, 1, nil, nil, nil, nil, nil, nil, nil, nil] x; 311 y; 0 mouseData; 0
      39 code; 0 msg; 512 lParam; [55, 1, nil, nil, nil, nil, nil, nil, nil, nil] x; 311 y; 0 mouseData; 0
      40 code; 0 msg; 512 lParam; [55, 1, nil, nil, nil, nil, nil, nil, nil, nil] x; 311 y; 0 mouseData; 0
      41 code; 0 msg; 512 lParam; [55, 1, nil, nil, nil, nil, nil, nil, nil, nil] x; 311 y; 0 mouseData; 0
      42 code; 0 msg; 512 lParam; [52, 1, nil, nil, nil, nil, nil, nil, nil, nil] x; 308 y; 0 mouseData; 0
      43 code; 0 msg; 512 lParam; [47, 1, nil, nil, nil, nil, nil, nil, nil, nil] x; 303 y; 0 mouseData; 0
      44 code; 0 msg; 512 lParam; [45, 1, nil, nil, nil, nil, nil, nil, nil, nil] x; 301 y; 0 mouseData; 0
      45 code; 0 msg; 513 lParam; [45, 1, nil, nil, nil, nil, nil, nil, nil, nil] x; 301 y; 0 mouseData; 0
      46 code; 0 msg; 512 lParam; [42, 1, nil, nil, nil, nil, nil, nil, nil, nil] x; 298 y; 0 mouseData; 0
      47 code; 0 msg; 512 lParam; [41, 1, nil, nil, nil, nil, nil, nil, nil, nil] x; 297 y; 0 mouseData; 0
      48 code; 0 msg; 512 lParam; [46, 1, nil, nil, nil, nil, nil, nil, nil, nil] x; 302 y; 0 mouseData; 0
      49 code; 0 msg; 512 lParam; [47, 1, nil, nil, nil, nil, nil, nil, nil, nil] x; 303 y; 0 mouseData; 0
      50 code; 0 msg; 512 lParam; [48, 1, nil, nil, nil, nil, nil, nil, nil, nil] x; 304 y; 0 mouseData; 0
      51 code; 0 msg; 512 lParam; [49, 1, nil, nil, nil, nil, nil, nil, nil, nil] x; 305 y; 0 mouseData; 0
      52 code; 0 msg; 512 lParam; [49, 1, nil, nil, nil, nil, nil, nil, nil, nil] x; 305 y; 0 mouseData; 0
      53 code; 0 msg; 514 lParam; [49, 1, nil, nil, nil, nil, nil, nil, nil, nil] x; 305 y; 0 mouseData; 0
      54 code; 0 msg; 512 lParam; [47, 1, nil, nil, nil, nil, nil, nil, nil, nil] x; 303 y; 0 mouseData; 0
      55 code; 0 msg; 512 lParam; [47, 1, nil, nil, nil, nil, nil, nil, nil, nil] x; 303 y; 0 mouseData; 0
      56 code; 0 msg; 512 lParam; [46, 1, nil, nil, nil, nil, nil, nil, nil, nil] x; 302 y; 0 mouseData; 0
      57 code; 0 msg; 512 lParam; [46, 1, nil, nil, nil, nil, nil, nil, nil, nil] x; 302 y; 0 mouseData; 0
      58 code; 0 msg; 512 lParam; [46, 1, nil, nil, nil, nil, nil, nil, nil, nil] x; 302 y; 0 mouseData; 0
      59 code; 0 msg; 512 lParam; [46, 1, nil, nil, nil, nil, nil, nil, nil, nil] x; 302 y; 0 mouseData; 0
      60 code; 0 msg; 512 lParam; [46, 1, nil, nil, nil, nil, nil, nil, nil, nil] x; 302 y; 0 mouseData; 0
      61 code; 0 msg; 513 lParam; [46, 1, nil, nil, nil, nil, nil, nil, nil, nil] x; 302 y; 0 mouseData; 0
      

      But Should the lParam struct give the whole structure?

      • From that structure I can only get the x-coordinate and sometimes the y-coordinate when cursor x-pos is 0. But I cannnot get the rest of the info. Like when I spin the mouse wheel wParam returns the message 522, but doesn't return the whole pointer to MSLLHOOKSTRUCT. I tested it on Borland Delphi 6 and it does returns the whole structure, but on ruby it doesn't. By many observations I came-up with an evidence:

      if some part of the pointer in ruby is nil then ruby assumes that the rest of the strucure is also nil and states it to the end of the pointer. It does that because if some part is nil then it would have to raise an error that it can't set nil value.
      Example:

      a=0.chr*16 a[4]=2 #Works! a[4]=nil #Raises an Error

      So, is there a way to get the whole structure without writing a dll?

      All references to urls are in my script.

      Plugin(unzip it to plugins and test):


      Low Level Mouse Procedure

      posted in Developers' Forum
      A
      Anton_S
    • RE: Hook Procedure (win32 api)

      πŸ˜„ , thanks Dan...
      Have you tried downloading the "HookProc.zip", which is on my first post of this topic?
      If you're willing to, can you please download it to plugins and test it if it works or not?

      Here is the reference:

      Items
      KeyboardProc - The stated script should write an active keyboard message to logLine or text and remove the message from being sent to current thread. Ex: Lets assume virtual keyboard message "p" is shortcut to pushpull. If you click key "p" while the KeyboardProc is not active, the shortcut should call the pushpull tool. If you click key "p" while the KeyboardProc is active then the pudspull tool won't be called. Keyboard messages will not be removed from other windows. It will just remove them from the stated window, which in this case would be the sketchup window.

      MouseProc - Should moniter/display mouse messages sent to the thread. Default script will not remove the messages. Ex: message 512 - mouse move, 522, mouse wheel rotate, 513 / 514 - mouse button clicks.

      LowLevelKeyboardProc - Should moniter/display and remove keyboard messages from the module handle. Ex: Lets say I have two windows: Sketchup and notepad++. In Sketchup window I activate LowLevelMouseProc, move to notepad++, and begin to type. Trying to type I don't get anything. It's because LowLevelKeyboard Hook Procedure prevents most the keyboard messages from to be sent to the module handle. Well, the once that it can't remove are some keyboard combination shortcuts, like "ctrl-alt-delete", "alt-lshift-PtrScn" and more.

      LowLevelMouseProc - Same as lowLevelKeyboardProc, but this time should display mouse messages sent to the module handle. Well you can state it to remove messages by changing "0" return value to "3", but by doing that your comp will act like the mouse is disconnected from the computer. If you'd want to remove only some mouse messages from module handle, then just write a block like "If wParam==512 then 0 else 3 end".

      All of the hooks above can be toggle by being set or unhooked.

      RemoveAll - Unhooks all hooks above.

      ClearTextQueue - Not really important in that role. Just clears the text queue that is displayed. LogLine remove's lines from text queue automatically, though just added for fun.

      Think this is all ❗

      Thanks... πŸ˜„

      posted in Developers' Forum
      A
      Anton_S
    • RE: Hook Procedure (win32 api)

      @dan rathbun said:

      (You can confirm by renaming the DLL, and copying the newer v1.8.6-p287 DLL from the SU8 folder, into the SU7 folder.)

      What is su8 mswin32 version?

      Based on this link http://forums.sketchucation.com/viewtopic.php?f=180&t=10142&start=15#p276047is there ruby 1.9.2 mswin32.dll?

      posted in Developers' Forum
      A
      Anton_S
    • RE: Hook Procedure (win32 api)

      Works and Tested in Sketchup 7 and 8.

      Note: some script that crashes in sketchup 7:

      def car return() end

      "return()" with nothing in brackets will crash su7. So, to return nothing in su7, do not add brackets ("return"). Though you can add brackets in su8.

      posted in Developers' Forum
      A
      Anton_S
    • Hook Procedure (win32 api)

      This is the start to method of monetering keyboard/mouse messages and making decisions for them to be either passed or removed.

      Some of us like Mr.k wondered on getting mouse input using win32 api. Here is the link: http://forums.sketchucation.com/viewtopic.php?f=180&t=38651. We got the click input, but it wasn't enough. We wanted more!!! So the main topic is about mouse and keyboard input.

      • Why need that?
        There are a lot of us including me who would want to make games or cool plugins in sketchup using mouse and keyboard, but so that shortcut keys won't interfere with sketchup tools. Of cource we could remove each shortcut, but that's an inoing pain of doing that. And yeah most of us use keyboard to select default tools, so they would want to set shortcuts back, but that also would take a long time.

      • Solution
        Before I went on doing something myself, I first decided to get some suggestions from Dad. He suggested to use the hook procedure. It took a long time though, before he had time to help me understand and explain about computer messages and inputs, but not refering to time I still got it. Anyways, the method of hook proccedure was to make a decision for a message. It could process or be removed.
        Hooks reference: http://msdn.microsoft.com/en-us/library/ms632589(v=VS.85).aspx

      Method:

      Firt we create Win API constants:
      SetWindowsHookEx=API.new('SetWindowsHookEx', 'IKII', 'I', 'User32') UnhookWindowsHookEx=API.new('UnhookWindowsHookEx', 'I', 'I', 'User32') CallNextHookEx=API.new('CallNextHookEx', 'IILL', 'I', 'User32') GetCurrentThreadId=API.new('GetCurrentThreadId', 'V', 'I', 'Kernel32') GetModuleHandle=API.new('GetModuleHandle', 'V', 'I', 'Kernel32')

      Then Callback Function:
      From my test and from thomthom's reference at http://forums.sketchucation.com/viewtopic.php?f=180&t=33756&start=15#p297228 it is better that callbacks would be set inside the class. Don't know why. Please tell me if you know or have some ideas about that.
      A callback function to keyboardProc parameters

      @@keyboardProc=API::Callback.new('ILI', 'I'){|nCode, wParam, lParam| return(CallNextHookEx.call(0, nCode, wParam, lParam)) if nCode<0 puts "any keyboard input is activated" ####Script#### 0 #0 - process the message, 3 - or I think any other positive number will remove the message from input. #Removed input will depend on threadID or module handle }

      Set Hook:

      For instance we'll take KeyboardProc http://msdn.microsoft.com/en-us/library/ms644984(v=VS.85).aspx

      setHook: hhk=SetWindowsHookEx.call(2, @@keyboardProc, hMod, threadID) http://msdn.microsoft.com/en-us/library/ms644990(v=VS.85).aspx

      This will make the callback function to get info on keyboard messages. In that callback function

      Unhook: HIGHLY RECOMMENDED!!! Stop callback function from being called. UnhookWindowsHookEx.call(hhk) http://msdn.microsoft.com/en-us/library/ms644993(v=VS.85).aspx

      There is another function: callNextHookEx. I know that It should be called in the callback function, but rightnow I'm not to sure exactly when to call it ~ when nCode<0 or what? Here's it is: http://msdn.microsoft.com/en-us/library/ms644974(v=VS.85).aspx
      Still everything works great in my script, but I would want some more explanation to that.

      In hooks you can hook two keyboard procedures: One is just "KeyboardProc" and other is "LowLevelKeyboardProc". KeyboardProc is mostly usefull to block messages to certain window or thread I think. LowLevelKeyBoardProc is to make decisions to messages of the whole module handle. Of cource "ctrl-alt-delete" message is passed, but i'll still give a little warning sign to that, since you wouldn't be able to send keyboard messages to other windows, while this message is active.

      You can also hook two kinds of mouse procedures. MouseProc and LowLevelMouseProc to which I would give a huge warning. - If all mouseMove messages would be removed from LowLevelMouseProc, then you won't be able to move the cursor. So, if you wan't to use it then remove only certain messages or remove all, but, so that there would be a way to unblock it back.

      Bug or script error on lParam input in callback functions:
      For instance lets take LowLevelMouseProc http://msdn.microsoft.com/en-us/library/ms644986(v=VS.85).aspx It says lParam should return a pointer to MSLLHOOKSTRUCT http://msdn.microsoft.com/en-us/library/ms644970(v=VS.85).aspx. But in my tests it only return's the x-coordinate of that structure. Should it return the whole structure? Or Does it return the address of that pointer? If does then how could I get the whole pointer structure? This is really important questions to me that I ask you to please answer it. Anyways, in LowLevelMouseProc I want to get the lParam because its MouseData specifies the dirrection the mousewheel rotation.

      Usage: Toggle between menu items, simple as that.


      Hook Procedure (unzip)

      posted in Developers' Forum
      A
      Anton_S
    • RE: SU 9 Wishlist

      I got a big wish here!!! I love new tools and other stuff, but they take a lot of space in the view. My idea is to allow sketchup view to be set full screen. I want to toggle it with one button, or some command. Ex: press F11 to set view full screen, hide the toolbars, and menus, and if click it again set the view back to standard position. I think I'm not the one who likes it, I think everyone else who read the wish would love it. πŸ˜„ Hope that wish comes true, or something like that.

      posted in SketchUp Feature Requests
      A
      Anton_S
    • RE: Extending SketchUp entities

      Why won't you just edit the face class and fill it with your "MyPrettyFaceClass" functions?

      Ex:
      Class Sketchup::Face #"MyPrettyFaceClass" functions end

      Did I got you right?

      posted in Developers' Forum
      A
      Anton_S
    • RE: Understanding Variables

      Okay, now I know!! πŸ˜„ And yeah at first my question made sense to me, but now it doesn't!

      Thanks πŸ˜„

      posted in Developers' Forum
      A
      Anton_S
    • Understanding Variables

      In classes:
      @var - instance variable
      @@var - class variable

      If those variables would be initialized outside of class(Ex: Sketchy physics ontick attribute: "if frame==0 then @var=0; @@var=0; end"), would there be no difference between those variables anymore?

      Thanks, ant-on

      posted in Developers' Forum
      A
      Anton_S
    • 1 / 1