Wyświetlanie znaku wodnego na mapie bazowej

Witam

 

Pracuję w solidworks 2011, mam już makro, które zapisuje mi mój aktywny plan, plan mojej aktywnej części lub wszystkie plany aktywnego zespołu, wszystko we właściwym miejscu.

To makro po prostu używa funkcji "zapisz jako" w formacie PDF z solidworks (bez wirtualnych drukarek, takich jak Bullzip lub PDFcréator!)


Mój problem polega na tym, że chciałbym, aby na mojej mapie bazowej pojawił się tekst z napisem "DO KONSULTACJI", jeśli chcę, podczas uruchamiania makra PDF.

 

Przede wszystkim pomyślałem o stworzeniu ukośnego bloku z odpowiednią czcionką, odpowiednim rozmiarem i spróbowałem dodać go do mojego tła za pomocą makra. Problem polega na tym, że ponieważ istnieje kilka formatów planów dla różnych formatów, pozycja wstawionego bloku, jak również rozmiar, nie są najłatwiejsze do zarządzania.

Następnie pomyślałem o tym, aby po prostu zrobić notatkę na mojej mapie bazowej (już dobrze umieszczonej i w odpowiednim rozmiarze) i po prostu wyświetlić ją, a następnie ukryć podczas uruchamiania makra, jeśli zdecyduję, że ta wersja planu będzie tylko do konsultacji.

Za pomocą nagrania udaje mi się ukryć moje pole tekstowe:
 

Sub main()

Ustaw swApp = _
Aplikacja.SldWorks

Ustaw część = swApp.ActiveDoc
boolstatus = Part.Extension.SelectByID2("Plan obiektu détail1988@Fond", "UWAGA", 0.2884716463644, 0.1501347778362, 0, Fałsz, 0, Nic, 0)

Część.Ukryj wymiar


Koniec subwoofera

Działa dobrze, a ten fragment kodu daje mi jednocześnie identyfikator mojego pola tekstowego. Dzięki temu mogę napisać kolejny fragment kodu, aby ponownie wybrać moją notatkę.
Z drugiej strony, bez względu na to, jak bardzo się staram, nie mogę znaleźć funkcji, która pozwoliłaby mi ponownie wyświetlić tę notatkę!!!

Wybór notatki prowadzi mnie do kolejnego pytania:

Jak kontrolować identyfikator obiektu? ponieważ w zależności od moich różnych linii bazowych, ID mojej notatki prawdopodobnie nie zawsze będzie takie samo (Obiekt détail1988@Fond planu" w moim przykładzie powyżej)

Przepraszam, być może zadaję podstawowe pytania w VBA SolidWorks, ale robię je od bardzo krótkiego czasu.

Z góry dzięki!

Yves

 

Witam

Najprostszym sposobem jest nadanie mu nazwy podczas tworzenia.

Dzięki temu o wiele łatwiej jest go później znaleźć, dzięki tej instrukcji:

http://help.solidworks.com/2012/English/api/sldworksapi/Get_Note_By_Name_Example_VB.htm

Edit: strona, która mogłaby być ciekawa dodatkowo:

http://help.solidworks.com/2013/English/api/sldworksapi/Place_Note_Behind_Drawing_Sheet_Example_VB.htm

 

 

Często robię to, aby wysłać do klienta.

 

Stworzyłem specjalne tło z bardzo jasną warstwą, na którym napisałem nazwę firmy dużymi literami.

 

Następnie, podczas rysowania, albo wybieram bezpośrednio mapę bazową, na której znajduje się ten filligrane, albo przechodzę przez makro, które zmienia moje bieżące tło, aby umieścić filligrane.

 

Zobacz obraz


filligrane.png
1 polubienie

Zobacz ten link do filmu

https://www.youtube.com/watch?v=R87mZoshW_Y

@+

Dziękuję za odpowiedzi

 

.PL: Nie mogę używać makr w twoich linkach

 

Bart: To prawda, że jest to pomysł, który może również usunąć dla mnie inny problem!
 

Postaram się tak.

 

Yves

 

Oszczędzam dzięki temu dużo czasu.

 

Zwłaszcza, gdy zmieniam pochodzenie nie wiadomo z jakiego powodu.

Otwarcie starego mepa z nowymi mapami bazowymi to prawdziwa magia!^^

Nie musisz nawet wpisywać kodu w vba. Musisz tylko wykonać manipulację ręcznie, klikając zapisz marco, a następnie zatrzymać się na końcu manipulacji.

Następnie wstaw przyciski skrótów i przesuń guinguamp ^^

(Benoit, czy tak jest lepiej?) =)


rectif.png
1 polubienie

 

Bart: Odpowiedziałem zbyt szybko, nie mogę użyć techniki zmiany tła, ponieważ dodaję elementy w moim planie tła, takie jak na przykład tabela ewolucji indeksu i wszystkie te elementy przeskakują za każdym razem.

GT22: Dziękuję za ten film. Ale mój problem jest nadal ten sam. Jak wyświetlić notatkę, która jest ukryta na mapie bazowej?

 

@yves: Dlaczego nie możesz używać makr? Oczywiście kod musi zostać dostosowany.

Dodatkowo podany przeze mnie kod polega na znalezieniu notatki po nazwie, trzeba ją nazwać przy tworzeniu!

Chciałbym użyć makra, ale jak nazywasz swoją notatkę po jej utworzeniu?

 

@Lucas: Szpital, który ma w dupie dobroczynność...^^

 

@yves: W przypadku makra, logicznie rzecz biorąc, notatki i tabele nie powinny być zakotwiczone w arkuszu.

2 polubienia

.PL : Tworzę go ręcznie za pomocą narzędzia "ocena" w zakładce "ocena"

Makra, o którym mowa, informuje mnie o błędzie w "pętli", informując mnie

          Błąd kompilacji:
          Pętla bez C

Bart: Moje elementy przeskakują za każdym razem, gdy zmieniam płaszczyznę bazową, ponieważ ograniczam je w stosunku do elementów mojej mapy bazowej

Dlaczego wszystkie moje odpowiedzi nie na temat zostały usunięte?

1 polubienie

Nie wiem, ale to wszystko nie odpowiada na moje pytanie o nazwanie notatki w momencie jej utworzenia, ani o późniejszą zmianę jej nazwy. Następnie, aby pojawiła się ukryta notatka...

 

Dziękuję

 

Yves

1 polubienie

Yves: Czy mógłbyś stworzyć makro, ucząc się podczas tworzenia notatki, żebym mógł zobaczyć kod?

Witam .PL

 

Oto zapis tego, jak notatka została utworzona:

 

Sub main()

Ustaw swApp = _
Aplikacja.SldWorks

Ustaw część = swApp.ActiveDoc

Przyciemnij moją notatkę jako obiekt
Przyciemnij moją adnotację jako obiekt
Dim myTextFormat As Object
Ustaw myNote = Part.InsertNote("KONSULTACJA PONR ")

Jeśli nie, MyNote jest niczym, to
   myNote.Angle = 0
   boolstatus = mojaNote.SetBalloon(0, 0)
   Ustaw myAnnotation = myNote.GetAnnotation()
   Jeśli nie, moja adnotacja to nic
      longstatus = myAnnotation.SetLeader3(swLeaderStyle_e.swNO_LEADER, 0, Prawda, Fałsz, Fałsz, Prawda)
      boolstatus = myAnnotation.SetPosition(0.1631152186896, 0.1620775367073, 0)
      boolstatus = myAnnotation.SetTextFormat(0, Prawda, mójFormatTekst)
   Zakończ jeżeli:
Zakończ jeżeli:

Part.ClearSelection2 Prawda
Part.WindowPrzerysowanie

Koniec subwoofera
 

Dla większej czytelności załączam plik tekstowy

 

Yves

 


macro_creation_note.txt

W rzeczywistości zamiast tworzyć notatkę ręcznie, będzie można za każdym razem tworzyć ją za pomocą makra, czy to problem?

Nie rozumiałem, że notatka została na początku utworzona ręcznie.

Edit: jeśli nie, to czy tekst nadal jest dokładnie "DO KONSULTACJI"?

W rzeczywistości, jak powiedziałem w moim pierwszym poście, myślałem o tym, aby go stworzyć, a następnie usunąć za każdym razem. Problem polega na tym, że mam 4 możliwe formaty tła (A3, A2, A1 i  A0), co oznacza, że rozmiar notatki musi się za każdym razem dostosowywać, a także jej położenie.

Dlatego spodobał mi się pomysł, że już go stworzyłem, ale ukryłem. 
Potrzebowałem tylko możliwości narzucenia identyfikatora tej notatki (tak, aby we wszystkich moich mapach bazowych wszystkie miały ten sam) i kodu, aby go pokazać (ponieważ mam już linię kodu, aby go ukryć)

Witam 

 

Więc nie ma linii kodu, aby wyświetlić notatkę, która jest ukryta? Kiedy można ukryć widoczną notatkę?

 

Dziękuję

 

Yves

Witam, potwierdzam, że oszczędzamy dużo więcej czasu, ponieważ nie musimy już zawracać sobie głowy wpisywaniem kodów w Vba. To bardzo wygodne.