CADsite forum

AutoCAD => Autolisp => Topic gestart door: fcbsam op wo 21 02 2007, 16:48:12

Titel: aanpassen van menu's
Bericht door: fcbsam op wo 21 02 2007, 16:48:12
heey,

ik wil een menu in AutoCAD 2000i aanpassen. Hoe doe ik dit? Ik heb de verwijzing naar het menu gevonden in mijn mnu en mns bestand maar ik moet mijn venster dat erop komt nadat ik hierop klik aanpassen. Het enige dat ik zie is >c>c>p en dan het commando dat het venster opent. Kunnen jullie mij helpen? Hoe kan ik dit aanpassen?

Bedankt op voorhand

greetz

Sam
Titel: Re: aanpassen van menu's
Bericht door: Gene op do 22 02 2007, 12:40:32
Veel hangt af van wat je wil aanpassen, verduidelijk even je vraag
Titel: Re: aanpassen van menu's
Bericht door: fcbsam op do 22 02 2007, 15:04:45
Wel het zit zo. Ik hew een menu. Als ik deze menu open dan komt er een scherm tevoorschijn. In dit scherm kan je vannalles aanpassen aan de parameters van de tekening. Als ik in dit scherm op een knopje klik opent er een nieuw scherm waarin ik nog gegevens kan ingeven. Hierin wil ik zorgen dat die gegevens die men moet ingeven dat ze voor geprogrameerd zijn. Nu type je daar maar in wat je wilt. Ik wil een keuze hebben, jeweetwel met zo een pijltje. Hoe moet ik dit doen? Ik werk met AutoCAD 2000i.

Bedankt voor de hulp

Sam
Titel: Re: aanpassen van menu's
Bericht door: bart op do 22 02 2007, 16:06:02
Citaat van: fcbsam op do 22 02 2007, 15:04:45
Wel het zit zo. Ik hew een menu. Als ik deze menu open dan komt er een scherm tevoorschijn. In dit scherm kan je vannalles aanpassen aan de parameters van de tekening. Als ik in dit scherm op een knopje klik opent er een nieuw scherm waarin ik nog gegevens kan ingeven. Hierin wil ik zorgen dat die gegevens die men moet ingeven dat ze voor geprogrameerd zijn. Nu type je daar maar in wat je wilt. Ik wil een keuze hebben, jeweetwel met zo een pijltje. Hoe moet ik dit doen? Ik werk met AutoCAD 2000i.

Bedankt voor de hulp

Sam

probeer eens een paar schermafdrukken te plaatsen
e.a lijkt meer op een lisp met een dcl scherm dan op een menu zo te lezen
Titel: Re: aanpassen van menu's
Bericht door: fcbsam op vr 23 02 2007, 08:32:03
inderdaad ik ben voor het moment Vlisp aan het leren zodat ik het kan aanpassen. Ik wil wel een print screen invoegen maar euh... Hoe doe je dat?

Sam
Titel: Re: aanpassen van menu's
Bericht door: bart op vr 23 02 2007, 09:49:24
Citaat van: fcbsam op vr 23 02 2007, 08:32:03
inderdaad ik ben voor het moment Vlisp aan het leren zodat ik het kan aanpassen. Ik wil wel een print screen invoegen maar euh... Hoe doe je dat?

Sam

Het is dus geen menu

dan kan je beter je code uploaden
de hulp zal dan een stuk gerichter kunnen zijn.

onder extra opties in (onder aan het reactie of antwoordscherm)
kan je een bijlage uploaden
Titel: Re: aanpassen van menu's
Bericht door: fcbsam op vr 23 02 2007, 10:00:55
Als ik op die knop 7 klik (rechts) Kom ik in het scherpje dat je links ziet. Daarin moet ik bij "omschrijving"de keuze laten maken. dus met zo een pijltje rechts. Als ik het goed versta is dit een list_box commando. maar waar moet je dit commando plaatsen? In het dcl bestand? Hoe bouw ik dit op?

Bedankt voor de hulp!

Sam
Titel: Re: aanpassen van menu's
Bericht door: fcbsam op vr 23 02 2007, 11:00:13
of popup_list :?

als ik de dcl aanpas moet de lsp dan ook aangepast worden?
Titel: Re: aanpassen van menu's
Bericht door: bart op vr 23 02 2007, 13:49:42
: popup_list {
label = "geefheteennaam";
   key = "lijstnaam";
   edit_width = 7;
      }


de lijst defineer je in de lisp

de lisp en de dcl horen bij elkaar je moet ze dus waarschijnlijk beide aanpassen
Titel: Re: aanpassen van menu's
Bericht door: fcbsam op vr 23 02 2007, 14:24:02
   :popup_list {
       label = "Omschrijving";
       width = 16;
       list = "\Houtsp.plaat MUF\nHoutsp.pl. MUF met vellingkant\nH.sp.pl. MUF wit gegrond\nNaturspan-0\nNaturspan-0 met vellingkant\nNaturspan-0 wit gegrond";
       height = 40;
    }

ik moest de lisp niet aanpassen...

Bedankt hé!!!

Sam
Titel: Re: aanpassen van menu's
Bericht door: bart op vr 23 02 2007, 14:34:12
dat kan ook

maar als je meer soorten en/of
"als dan" constructies in de lijst wilt inbouwen stop ik dit zelf liever in de lisp
Titel: Re: aanpassen van menu's
Bericht door: fcbsam op vr 23 02 2007, 15:38:52
aah oké, Seg een klein detail. Als ik in die lijst het juist geselcteerd heb en dan weer sluit dan houd hij die keuze niet bij. hoe komt dit?

Sam
Titel: Re: aanpassen van menu's
Bericht door: fcbsam op vr 23 02 2007, 15:59:09
hoe moet ik die list definieren in mijn lisp file?

Sam
Titel: Re: aanpassen van menu's
Bericht door: bart op zo 25 02 2007, 11:09:23
 (setq lijstnaam (list "100" "120" "140" ))

of

(setq lijstnaam '( "100" "120" "140" ))

Titel: Re: aanpassen van menu's
Bericht door: fcbsam op ma 26 02 2007, 08:41:00
het lukt nog altijd niet. Nu definieer ik mijn lijst in mijn lisp file maar hij vind de namen niet terug dus staat er niets in de lijst. Dit is mijn lisp.

(defun HSB-DAKP-Plaat-edit ( / k j l TileVar Soort)

   
    (new_dialog "HSB_PLAAT_EDIT" DAKP)

    (setq Spaanderplaten '( "Houtsp.plaat MUF" "Houtsp.pl. MUF met vellingkant" "Houtsp.plaat MUF wit" "H.sp.pl. MUF wit gegrond" "Naturspan-0" "Naturspan-0 met vellingkant" "Naturspan-0 wit gegrond" ))
    (setq k 0)
    (setq j 0)
    (setq TileVar "")
   
    (while (< k (strlen PlaatVar))
        (setq k (+ k 1))
        (setq l (substr PlaatVar k 1))
        (if (= l ";")
            (progn
                (setq j (+ j 1))
                (setq tile (strcat "PlaatVar" (itoa j)))
                (if (get_tile tile)
                    (set_tile tile tilevar)
                )
                (if (= j 3)
                   (setq Soort (atoi TileVar))
                )
                (setq TileVar "")
            );progn
            (setq TileVar (strcat TileVar l))
        )
    )
    (if (Not Soort) (setq Soort 1))
    (HSB-DAKP-Plaat-Image Soort)
   
    (action_tile "cancel"
        "(setq HSB_OK nil)(done_dialog)"
    )
   
    (action_tile "accept"
        "(setq HSB_OK 1)(HSB-DAKP-Plaat-OK)(done_dialog)"
    )
    (action_tile "Rechts"
        "(setq Soort (+ Soort 1))(if (> Soort 8) (setq Soort 1))(HSB-DAKP-Plaat-Image Soort)"
    )
    (action_tile "Links"
        "(setq Soort (- Soort 1))(if (< Soort 1) (setq Soort 8))(HSB-DAKP-Plaat-Image Soort)"
    )
    (start_dialog)

)


daar in het begin heb ik dus mijn lijst gedefinieerd (Spaanderplaten) dit is mijn dcl:

     : popup_list {
      label = "Omschrijving";
      key = "Spaanderplaten";
      edit_width = 40;
      }

Weet er iemand waar dit stroef loopt?

1000 X bedankt voor de hulp

Sam
Titel: Re: aanpassen van menu's
Bericht door: WebRacer op di 06 03 2007, 15:01:05
ik heb hier eens mijn oog op geworpen, maar dit is niet simpel e... we krijgen maar 1 subroutine om in te werken, de DCL is zeker al onvolledig, en of die while zal werken tijdens het aanspreken van uw dialoogbox betwijfel ik ook..... maar enfin dit is wat ik al aangepast heb:

(defun HSB-DAKP-Plaat-edit ( / k j l TileVar Soort)
  (setq Spaanderplaten '( "Houtsp.plaat MUF" "Houtsp.pl. MUF met vellingkant" "Houtsp.plaat MUF wit" "H.sp.pl. MUF wit gegrond" "Naturspan-0" "Naturspan-0 met vellingkant" "Naturspan-0 wit gegrond" ))
  (setq k 0)
  (setq j 0)
  (setq TileVar "")
  (new_dialog "HSB_PLAAT_EDIT" (load_dialog DAKP))
  (start_list "Spaanderplaten")
  (while (< k (strlen PlaatVar))
    (setq k (+ k 1))
    (setq l (substr PlaatVar k 1))
    (if (= l ";")
      (progn
   (setq j (+ j 1))
   (setq tile (strcat "PlaatVar" (itoa j)))
   (if (get_tile tile)
     (set_tile tile tilevar))
   (if (= j 3)
     (setq Soort (atoi TileVar)))
   (setq TileVar "")
      );progn
      (setq TileVar (strcat TileVar l))))
  (if (Not Soort) (setq Soort 1)) ; indien geen soort gekozen = soort 1
  (HSB-DAKP-Plaat-Image Soort) ; aanspreken subroutine?? niet aanwezig
  (action_tile "cancel" "(setq HSB_OK nil)(done_dialog)")   
  (action_tile "accept" "(setq HSB_OK 1)(HSB-DAKP-Plaat-OK)(done_dialog)")
  (action_tile "Rechts" "(setq Soort (+ Soort 1))(if (> Soort 8) (setq Soort 1))(HSB-DAKP-Plaat-Image Soort)")
  (action_tile "Links"  "(setq Soort (- Soort 1))(if (< Soort 1) (setq Soort 8))(HSB-DAKP-Plaat-Image Soort)")
  (start_dialog)
  (done_dialog)
  (unload_dialog dia_id)
  (if (= HSB_OK 1)
      (programma verder lopen); hier verder programeren
      (exit))
)

als dit inderdaad een subroutine moet zijn, dan zal je deze moeten herbekijken vrees ik en er van uitgaan dat de dialoogbox appart moet staan zoals in deze struktuur:

(setq a a
   b b
   lijst "lijst van de onderdelen"
   enz enz....)
;laden dialoogbox
  (setq dia_id (load_dialog naam-dialoogbox))
  (new_dialog "dcl-file-naam" dia_id)
;instellen dialoogbox
  (start_list "lijst");starten van de lijst om ze zichtbaar te maken
  (action_tile "tile-x" "(subroutine aanspreken)"); als je tile-x aanspreekt >> subroutine starten
  (action_tile "cancel" "(SETQ ok_ nil)");cancel => ok_ op nil
;laten verschijnen van dialoogbox
  (start_dialog)
  (done_dialog)
;ontladen dialoogbox
  (unload_dialog dia_id)
;programma als ok_ niet nil is
  (if (= ok_ nil)
      (exit)
      (progn
   hier komt dan uw programma die de waardes uit het dialoogboxke gebruikt))
Titel: Re: aanpassen van menu's
Bericht door: fcbsam op wo 07 03 2007, 08:58:20
in bijlage vindt u het volledige dcl en lsp bestand.

HSB_BLOK_EDIT : dialog {
    label = "muurbeschrijving";
   
    :edit_box {
       label = "Dikte       ";
       key="PlaatVar1";
       width = 16;
    }
    :edit_box {
       label = "Omschrijving";
       key="PlaatVar2";
       width = 16;
    }
    :boxed_row {
        label="Verdeling";
        :button {
            label ="<";
            key = "Links";
        }
        :image {
            key="PlaatImage";
            aspect_ratio = 1.4;
            height=10;
        }
        :button {
            label =">";
            key = "Rechts";
        }
    }
    :edit_box {
        label= "A";
        key="PlaatVar4";
        width = 16;
    }
    :edit_box {
        label="B";
        key="PlaatVar5";
        width = 16;
    }
    ok_cancel;
}
HSB_PLAAT_EDIT : dialog {
    label = "Plaat beschrijving";
    :edit_box {
       label = "Dikte";
       key="PlaatVar1";
       width = 16;
    }
        : popup_list {
            popup_height = 4;
            label = "Omschrijving";
            value = "";
            key = "lijst";
            fixed_width_font = true;
            edit_width = 40;           
   }
       :boxed_row {
        label="Verdeling";
        :button {
            label ="<";
            key = "Links";
        }
        :image {
            key="PlaatImage";
            aspect_ratio = 1.4;
            height=10;
        }
        :button {
            label =">";
            key = "Rechts";
        }
    }
    :edit_box {
        label= "A";
        key="PlaatVar4";
        width = 16;
    }
    :edit_box {
        label="B";
        key="PlaatVar5";
        width = 16;
    }
    :edit_box {
        label="C";
        key="PlaatVar6";
        width = 16;
    }
    :edit_box {
        label="D";
        key="PlaatVar7";
        width = 16;
    }
    ok_cancel;
}

HSB_DETAIL_LIJST : dialog {
   label = "Keuze details";
      :row {
         :image {
            key="DetailImage";
            aspect_ratio = 1.4;
            height=16;
         }
         :column {
            :popup_list {
               key="DetailList";
               width = 20;
            }
            :text {
               key="DetailLabel2";
               width = 16;
            }
            :text {
               key="DetailLabel3";
               width = 16;
            }
            :text {
               key="DetailLabel4";
               width = 16;
            }
            :text {
               key="DetailLabel5";
               width = 16;
            }
            :text {
               key="DetailLabel6";
               width = 16;
            }
            :text {
               key="DetailLabel7";
               width = 16;
            }
            :text {
               key="DetailLabel8";
               width = 16;
            }
            :text {
               key="DetailLabel9";
               width = 16;
            }
            :text {
               key="DetailLabel10";
               width = 16;
            }
            :text {
               key="DetailLabel11";
               width = 16;
            }
            :text {
               key="DetailLabel12";
               width = 16;
            }
         }
      }   
      :row {
           :button {
               label= "Delete";
               key="Delete";
           }
           :button {
               label = "Cancel";
               key="cancel";
               is_cancel =true;
           }
      }
}




HSB_GAT_VAR : dialog {
   label = "Gat";
         :column {
            :edit_box {
               label="Omschrijving";
               key="Omschrijving";
               edit_width = 16;
            }
            :edit_box {
               label="Diameter ";
               key="Diameter";
               edit_width = 8;
            }
            :toggle {
               label="Boven ";
               key="Boven";
            }
            :toggle {
               label="Onder ";
               key="Onder";
            }
         }
   ok_cancel;
}




HSB_DAKP_OPENING : dialog {
   label = "Keuze openingen";
   :list_box {
        key="OpeningList";
        width = 40;
   }
   :row {
       ok_cancel;

       :button {
          label= "Delete";
          key="Delete";
       }
   }
   
}



HSB_OPENING_VAR : dialog {
    label = "Dakraam-beschrijving";
    :column {
        :boxed_column {
            :button {
               key="OpeningKeuze";
               label= "D E F A U L T";
            }
            :button {
               key="SaveDefault";
               label= "Save as default";
            }
        }
        :edit_box {
           label="Omschrijving";
           key="Omschrijving";
           edit_width = 16;
        }
        :boxed_column {
            label="Afmetingen";
            :edit_box {
               label="Hoogte boven ";
               key="HoogteBoven";
               edit_width = 8;
            }
            :edit_box {
               label="Hoogte raam ";
               key="HoogteRaam";
               edit_width = 8;
            }
            :edit_box {
               label="Afstand panlat ";
               key="AfstandPanlat";
               edit_width = 8;
            }
        }
        :boxed_column {
           label="Details";
           :row {
                :column{
                    :text{
                        label="Boven ";
                    }
                    :text{
                        label="Schuin Boven ";
                    }

                    :text{
                        label="Onder ";
                    }
                    :text{
                        label="Schuin Onder ";
                    }
                    :row {
                        :text{
                            label="Links ";
                        }
                        :edit_box {
                            key="AantalLinks";
                            edit_width = 2;
                        }
                    }
                    :row {
                        :text{
                            label="Rechts ";
                        }
                        :edit_box {
                            key="AantalRechts";
                            edit_width = 2;
                        }
                    }   
                 }
                 :column{
                    :edit_box {
                        key="DetailBoven";
                        edit_width = 12;
                    }
                    :edit_box {
                        key="DetailSchuinBoven";
                        edit_width = 12;
                    }
                    :edit_box {
                        key="DetailOnder";
                        edit_width = 12;
                    }
                    :edit_box {
                        key="DetailSchuinOnder";
                        edit_width = 12;
                    }
                    :edit_box {
                        key="DetailLinks";
                        edit_width = 12;
                    }
                    :edit_box {
                        key="DetailRechts";
                        edit_width = 12;
                    }
                 }
                 :column{   
                    :button {
                        label= "EDIT";
                        key="DetailBovenEdit";
                        fixed_width = 4;
                    }
                    :button {
                        label= "EDIT";
                        key="DetailSchuinBovenEdit";
                        fixed_width = 4;
                    }
                    :button {
                        label= "EDIT";
                        key="DetailOnderEdit";
                        fixed_width = 4;
                    }
                    :button {
                        label= "EDIT";
                        key="DetailSchuinOnderEdit";
                        fixed_width = 4;
                    }
                    :button {
                        label= "EDIT";
                        key="DetailLinksEdit";
                        fixed_width = 4;
                    }
                    :button {
                        label= "EDIT";
                        key="DetailRechtsEdit";
                        fixed_width = 4;
                    }
                }
           }
        }
     }
   ok_cancel;
}


bedankt voor de hulp. Als het lukt dat trakteer ik je!

groet sam
Titel: Re: aanpassen van menu's
Bericht door: fcbsam op wo 07 03 2007, 09:01:59
Citaat van: fcbsam op wo 07 03 2007, 09:01:37
oeps negeer die code. ik kon die dcl niet in bijlage steken maar ik voeg ze nu toe als txt

Titel: Re: aanpassen van menu's
Bericht door: WebRacer op wo 07 03 2007, 12:14:18
DCL ziet er uit zoals ik vermoed had...
maar zonder de LSP kan ik het niet doen werken....

je bent wel op goede weg met je lisp, alleen moet je dus idd zoals ik zei 2 subroutines hebben...
eentje voor de klik op linkse pijltje, die dan alle vensters aanpast + andere foto toont.... en visa versa

een while  tijdens het inlezen/inladen/aanspreken een dialoogbox kan niet (tenzij het mij iemand anders bewijst)...