sketchucation logo sketchucation
    • Login
    ℹ️ GoFundMe | Our friend Gus Robatto needs some help in a challenging time Learn More

    Procedure flag resets itself?

    Scheduled Pinned Locked Moved Plugins
    7 Posts 2 Posters 490 Views
    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.
    • honoluludesktopH Offline
      honoluludesktop
      last edited by

      What am I doing wrong. I am calling a procedure "Entities_In" from another, "Block_In", but when it returns, "polyline_flag" is reset from "1" to "0". The "puts" are in the code for debugging. I verified that at the end of "Entities_In" that the flag is correct, but when it returns to where it is called from, within "Block_In", it is no longer set correctly. Is there something about passing parameters that I do not understand?

      The "puts" as in the ruby console:
      goto entin from blkin, plflag 0 polyline face PL_DFace_In POLYLINE return from plin, plflag 1 prior exit entin, plflag 1 return from entin, plflag 0

      def Block_In(count,dface_flag,dface_option,line_off,arc_flag,circle_flag,polyline_flag,insert_flag,block_flag,line,insert_off)
      	if line == "INSERT\n"
      		Insert_In(count,insert_flag,insert_off,line)
      		else if line == "ENDBLK\n"	
      			block_flag = 0
      		else
      puts "goto entin from blkin, plflag "+polyline_flag.to_s
      			Entities_In(count,dface_flag,dface_option,line_off,arc_flag,circle_flag,polyline_flag,insert_flag,block_flag,line)
      puts "return from entin, plflag "+polyline_flag.to_s
      		end
      	end
      end
      
      def Entities_In(count,dface_flag,dface_option,line_off,arc_flag,circle_flag,polyline_flag,insert_flag,block_flag,line)
      .
      .
      .
      	if line_flag == 1
      		Line_In(count,line_flag,line_off,line)
      		else if polyline_flag == 1 and dface_option == 0
      			Polyline_In(polyline_flag,line)
      			else if polyline_flag == 1 and dface_option == 1
      				PL_DFace_In(polyline_flag,line)
      puts "return from plin, plflag "+polyline_flag.to_s
      				else if circle_flag == 1
      					Circle_In(count,circle_flag,line)
      					else if arc_flag == 1
      						Arc_In(count,arc_flag,line)
      						else if dface_flag == 1
      							DFace_In(count,polyline_flag,line)
      						end
      					end
      				end
      			end
      		end
      	end
      puts "end of plin, plflag "+polyline_flag.to_s
      
      end
      
      1 Reply Last reply Reply Quote 0
      • TIGT Offline
        TIG Moderator
        last edited by

        I haven't looked closely at your code... BUT try to start your 'defs' with a lowercase letter NOT a CAPITAL letter ?
        def blockXXX(...) NOT def **B**lockXXX(...)
        Capitals are reserved for class/module and global constants etc...

        TIG

        1 Reply Last reply Reply Quote 0
        • honoluludesktopH Offline
          honoluludesktop
          last edited by

          Tried it, but "no can do". No caps, too bad, I used caps to make the code easier to read.

          My problem reminds me of a "grade school" rule. "Pass on, no pass back" πŸ™‚

          1 Reply Last reply Reply Quote 0
          • honoluludesktopH Offline
            honoluludesktop
            last edited by

            OK, I figured out how to use instance variables by @variable. If I use them, will other plugins be affected in the manner of global variables?

            I understand why not to use global variables, can the other types be problematic?

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

              First the def's "no-CAPS" rule only applies to the first letter! So def blockXXX2(a,b,c) is fine...
              Conversely a class should start with a CAP [ class BlockXXX]...
              The @variable is only used in that activated instance of that class/module or group of defs.
              There is a @@variable type that you can make when the class/module is first initialized.
              These @ types remain within there bounds - unlike $variable which pervades all tools and can be dangerous if the name is 'common' - using $x in you tool is fatal to any other tool foolish enough to use it too - $x_my_special_tool_XXX_variable is less likely to clash!

              TIG

              1 Reply Last reply Reply Quote 0
              • honoluludesktopH Offline
                honoluludesktop
                last edited by

                TIG, thanks for the lesson.

                @tig said:

                .......using @x in you tool is fatal to any other tool foolish enough to use it too ........

                " @x"'s a typo, yes. Assuming you mean "..using $x in..". Anyway I rewrote the code with @variable for those that have to be available for different procedures.

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

                  @honoluludesktop said:

                  TIG, thanks for the lesson.

                  @tig said:

                  .......using @x in you tool is fatal to any other tool foolish enough to use it too ........

                  " @x"'s a typo, yes. Assuming you mean "..using $x in..". Anyway I rewrote the code with @variable for those that have to be available for different procedures.

                  Typo fixed 😳 πŸ˜’
                  [I an conditioned not to type $ in front of a variable name!!!] πŸ˜‰

                  TIG

                  1 Reply Last reply Reply Quote 0
                  • 1 / 1
                  • First post
                    Last post
                  Buy SketchPlus
                  Buy SUbD
                  Buy WrapR
                  Buy eBook
                  Buy Modelur
                  Buy Vertex Tools
                  Buy SketchCuisine
                  Buy FormFonts

                  Advertisement