Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Użytkownik

Cześć. Mam wiele plików w formacie dxf i przydałoby mi się możliwość podglądu tych plików w taki sposób, że gdy zaznaczę dany plik lub najadę na niego kursorem, to pojawi się miniaturka (taki kwadrat) z jego zawartością, abym wiedział co się w nim znajduje bez otwierania go. Było chyba coś takiego w starym KDE 3.5 albo starszym. Ja potrzebuję tego w XFCE. Pozdrawiam.
Offline

Użytkownik


Zobacz czy dzialania z tego watku na forum pomoga:
https://forum.xfce.org/viewtopic.php?id=3807
Offline
Użytkownik

Dzięki, sprawdzi się.
Offline





Szczawiożerca






To nie zależy bezpośrednio od środowiska graficznego, a od menedżera plików.
W starym KDE był Konqueror, teraz jest mniej rozbudowany Dolphin.
Offline
Użytkownik

http://goodies.xfce.org/projects/thunar-plugins/thu … s#version_041
Nie ma tutaj na liście formatu .dxf, a ja właśnie do takich plików potrzebuje mieć podgląd.
Ostatnio edytowany przez lukasz89 (2017-11-18 16:53:39)
Offline



Użytkownik




Wypróbuj poniższe:
Skrypt pythona http://yorik.uncreated.net/scripts/dxf-thumbnailer.py
#!/usr/bin/python
#***************************************************************************
#* *
#* Copyright (c) 2010 Yorik van Havre <yorik@uncreated.net> *
#* *
#* This program is free software; you can redistribute it and/or modify *
#* it under the terms of the GNU General Public License (GPL) *
#* as published by the Free Software Foundation; either version 2 of *
#* the License, or (at your option) any later version. *
#* for detail see the LICENCE text file. *
#* *
#* This program is distributed in the hope that it will be useful, *
#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
#* GNU Library General Public License for more details. *
#* *
#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
#* USA *
#* *
#***************************************************************************
__title__="DXF thumbnailer utility"
__author__ = "Yorik van Havre <yorik@uncreated.net>"
__url__ = "http://yorik.uncreated.net"
__version__ = '0.1 - 11.10.2010'
'''
Linux DXF thumbnailer.
This application generates a 128x128px PNG image showing the contents of a DXF
file. In order to speed up the image generation process, only a few types of
entities are read, so complex files might not get rendered accurately or even
fail to render.
In order to use this program, you must configure your file manager to use it
as a thumbnailer for dxf file type (mime type: image/x-dxf).
'''
import sys, getopt, gnomevfs, Image, ImageDraw
opt,par = getopt.getopt(sys.argv[1:],'-s:')
inpfile = gnomevfs.get_local_path_from_uri(par[0])
outfile = par[1]
# inpfile = par[0]
# outfile = 'test.png'
try:
objects = []
currentobject = []
command = None
store = None
startentities = False
xmin = 0
xmax = 0
ymin = 0
ymax = 0
dxf = open(inpfile)
for l in dxf.readlines():
fline = l.strip()
if fline == 'ENTITIES': startentities = True
if not startentities: continue
if not command:
if fline == 'POLYLINE' or fline == 'LWPOLYLINE':
vertexmode = False
command = 'polyline'
currentobject.append(command)
elif fline == 'LINE':
command = 'line'
currentobject.append(command)
elif fline == 'ARC':
command = 'arc'
currentobject.append(command)
elif fline == 'CIRCLE':
command = 'circle'
currentobject.append(command)
elif command == 'line':
if not store:
if fline == '10': store = 'x'
elif fline == '20': store = 'y'
elif fline == '11': store = 'x'
elif fline == '21': store = 'y'
else:
num = float(fline)
currentobject.append(num)
if store == 'x':
if num < xmin: xmin = num
if num > xmax: xmax = num
elif store == 'y':
if num < ymin: ymin = num
if num > ymax: ymax = num
store = None
if len(currentobject) == 5:
objects.append(currentobject)
currentobject = []
command = None
elif command == 'arc':
if not store:
if fline == '10': store = 'x'
elif fline == '20': store = 'y'
elif fline == '40': store = 'other'
elif fline == '50': store = 'other'
elif fline == '51': store = 'other'
else:
num = float(fline)
currentobject.append(num)
if store == 'x':
if num < xmin: xmin = num
if num > xmax: xmax = num
elif store == 'y':
if num < ymin: ymin = num
if num > ymax: ymax = num
store = None
if len(currentobject) == 6:
objects.append(currentobject)
currentobject = []
command = None
elif command == 'circle':
if not store:
if fline == '10': store = 'x'
elif fline == '20': store = 'y'
elif fline == '40': store = 'other'
else:
num = float(fline)
currentobject.append(num)
if store == 'x':
if num < xmin: xmin = num
if num > xmax: xmax = num
elif store == 'y':
if num < ymin: ymin = num
if num > ymax: ymax = num
store = None
if len(currentobject) == 4:
objects.append(currentobject)
currentobject = []
command = None
elif command == 'polyline':
if not store:
if fline == 'VERTEX': vertexmode = True
elif fline == '10' and vertexmode: store = 'x'
elif fline == '20'and vertexmode: store = 'y'
elif fline == 'SEQEND':
objects.append(currentobject)
currentobject = []
command = None
else:
num = float(fline)
currentobject.append(num)
if store == 'x':
if num < xmin: xmin = num
if num > xmax: xmax = num
elif store == 'y':
if num < ymin: ymin = num
if num > ymax: ymax = num
store = None
print len(objects),"objects"
print "bounding box",xmin,ymin,xmax,ymax
sizex = xmax-xmin
sizey = ymax-ymin
image = Image.new('RGB',(128,128))
draw = ImageDraw.Draw(image)
draw.rectangle((0,0,128,128),fill='#ffffff')
for ob in objects:
print "drawing",ob
if ob[0] == 'line':
x1 = int(((ob[1]-xmin)/sizex)*128)
y1 = 128-int(((ob[2]-ymin)/sizey)*128)
x2 = int(((ob[3]-xmin)/sizex)*128)
y2 = 128-int(((ob[4]-ymin)/sizey)*128)
draw.line((x1,y1,x2,y2),fill=0)
elif ob[0] == 'polyline':
x1 = int(((ob[1]-xmin)/sizex)*128)
y1 = 128-int(((ob[2]-ymin)/sizey)*128)
done = False
for p in ob[3:]:
if not done:
lp = p
else:
x2 = int(((lp-xmin)/sizex)*128)
y2 = 128-int(((p-ymin)/sizey)*128)
draw.line((x1,y1,x2,y2),fill=0)
x1 = x2
y1 = y2
done = not(done)
elif ob[0] == 'circle':
x1 = int((((ob[1]-ob[3])-xmin)/sizex)*128)
y1 = 128-int((((ob[2]-ob[3])-ymin)/sizey)*128)
x2 = int((((ob[1]+ob[3])-xmin)/sizex)*128)
y2 = 128-int((((ob[2]+ob[3])-ymin)/sizey)*128)
draw.ellipse((x1,y2,x2,y1),outline=0)
elif ob[0] == 'arc':
x1 = int((((ob[1]-ob[3])-xmin)/sizex)*128)
y1 = 128-int((((ob[2]-ob[3])-ymin)/sizey)*128)
x2 = int((((ob[1]+ob[3])-xmin)/sizex)*128)
y2 = 128-int((((ob[2]+ob[3])-ymin)/sizey)*128)
start = int(ob[4])
end = int(ob[5])
draw.arc((x1,y2,x2,y1),start,end,fill=0)
del draw
image.save(outfile,'PNG')
except:
sys.exit(1)Plik dla thunara dxf-thumbnailer.Desktop o zawartości:
[Thumbnailer Entry] TryExec=dxf-thumbnailer.py Exec=dxf-thumbnailer.py %u %o %s MimeType=image/x-dxf;image/vnd.dxf;image/vnd.dwg;image/x-dwg;application/dxf;
Szczegóły:
http://yorik.uncreated.net/guestblog.php?tag=linux&complete=3
Ostatnio edytowany przez arecki (2017-11-18 18:09:24)
Offline
Użytkownik

Myślę, że sobie odpuszczę, bo i tak tego nie zrobię, no chyba, że ktoś mnie poprowadzi jak za rękę, a poza tym ja potrzebuję mieć ten podgląd plików na PC, który nie jest połączony z netem.
Offline






Ojciec Założyciel
zainstaluj freecad
Offline
Użytkownik

Oferuje on podgląd plików bez robienia czegokolwiek ? Teraz używam LibreCAD-2D.
Ostatnio edytowany przez lukasz89 (2017-11-19 14:14:53)
Offline






Ojciec Założyciel
lukasz89 napisał(-a):
Oferuje on podgląd plików bez robienia czegokolwiek ? Teraz używam LibreCAD-2D.
A skąd ja mam wiedzieć :D
Zazwyczaj jednak jest tak, że zainstalowanie programu dedykowanego powoduje, że pliki są widoczne w podglądzie.
Zainstalowanie nic nie boli, zawsze możesz odinstalować.
Offline



Użytkownik




Bodzio napisał(-a):
lukasz89 napisał(-a):
Oferuje on podgląd plików bez robienia czegokolwiek ? Teraz używam LibreCAD-2D.
A skąd ja mam wiedzieć :D
Zazwyczaj jednak jest tak, że zainstalowanie programu dedykowanego powoduje, że pliki są widoczne w podglądzie.
Zainstalowanie nic nie boli, zawsze możesz odinstalować.
Ja mam na swoim testingu freecada, qcada, draftsighta i nie ma podglądu dxf.
Próbowałem też na swoim testingu tego skryptu pythona, ale na razie wywala mi błąd:
Traceback (most recent call last):
File "./dxf-thumbnailer.py", line 47, in <module>
inpfile = gnomevfs.get_local_path_from_uri(par[0])
IndexError: list index out of rangeOstatnio edytowany przez arecki (2017-11-19 20:31:15)
Offline





Szczawiożerca






arecki napisał(-a):
Ja mam na swoim testingu freecada, qcada, draftsighta i nie ma podglądu dxf.
Bo za to odpowiada menedżer plików.
Offline

Użytkownik


@arecki
Pokombinuj z tym
https://toggen.com.au/blog/it-tips/getting-thumbnai … -on-fedora-20
Offline



Użytkownik




@ciastek1981, dałeś linka właśnie do tego samego skryptu.
Offline

Użytkownik


Może i tak ;)
Plik do Thunar'a skąd brałeś?
For thunar: Download this dxf-thumbnailer.Desktop file and place it in /usr/share/thumbnailers. That's it!
Tam przekierowuje na http://yorik.uncreated.net/scripts/dxf-thumbnailer.Desktop
a powinno na
http://yorik.uncreated.net/scripts/dxf-thumbnailer.desktop
[Desktop Entry] Version=1.0 Encoding=UTF-8 Type=X-Thumbnailer Name=dxf Thumbnailer MimeType=image/x-dxf; X-Thumbnailer-Exec=dxf-thumbnailer.py %u %o %s GenericName=DXFThumbnailer
Ostatnio edytowany przez ciastek1981 (2017-11-20 13:38:10)
Offline



Użytkownik




Plik do thunara tworzyłeem własnoręcznie bazując na innych już posiadanych zgodnie z podanymi wcześniej zapisami.
Spróbuje tak jak podałeś.
Spróbowałem najpierw uruchomić ten skrypt z argumentami %u %o %s (na podstawie poniższej pomocy)
%o
The local path to the output file where to store the generated thumbnail. The output file must be written as valid PNG file according to the thumbnail standard (see above). Note that the path may not end with .png, which matters if you invoke certain third party tools.
%s
Pożądany rozmiar generowanej miniatury w pikselach. Parametr opcjonalny.
%u
Similar to %i, but substituted with the URI of the file, rather than the path. This was added for compatibility with GNOME.
Stworzyłem przykładowy plik i zapisałem jako dxf w wersji R12 ASCII.
Uruchomiłem skrypt z odpowiednimi argumentami.
./dxf-thumbnailer.py file:///home/user/Dokumenty/DXF/R12_ASCII.dxf r12_ascii.png 9 objects bounding box -34.3432835821 -17.7492537313 232.03880597 174.371641791 drawing ['polyline', 62.43582089552234, 166.2268656716418, 62.43582089552234, 55.5537313432835, 205.2089552238805, 55.5537313432835, 205.2089552238805, 166.2268656716418] drawing ['circle', 82.55820895522385, 141.3134328358209, 57.01544584430721] drawing ['circle', 179.3373134328358, 79.50895522388058, 73.49110150753505] drawing ['line', 17.39999999999998, 22.4955223880597, 232.0388059701492, 174.3716417910448] drawing ['line', 232.0388059701492, 174.3716417910448, -34.34328358208958, -17.74925373134332] drawing ['line', -34.34328358208958, -17.74925373134332, -34.34328358208958, 119.7537313432836] drawing ['line', -34.34328358208958, 119.7537313432836, 130.4686567164179, -13.91641791044779] drawing ['line', 130.4686567164179, -13.91641791044779, 15.00447761194027, -13.91641791044778] drawing ['line', 15.00447761194027, -13.91641791044778, 11.17164179104475, 144.1880597014925]
Wygenerowało mi podgląd w pliku png, teoretycznie powinno to więc współdziałać również z thunarem.
Na razie jednak nie udaje mi się to z thunarem.
Ostatnio edytowany przez arecki (2017-11-20 18:57:07)
Offline


Użytkownik



Sprawa jest dość prosta. Zrobienie pinga z dxf to tylko cześć, tego co trzeba zrobić. Obsługą podglądu plików zajmuje się tumbler i potrzeba czegoś do konwersji z dxf do png. Najważniejsze jest jak tworzona jest nazwa pliku png podglądu, a jest generowana z sumy kontrolnej pełnej ścieżki w ten sposób echo -n 'file:///cała/ścieżka/pliku' | md5sum, inaczej nic z tego. Pewnie można coś znaleźć w pythonie lub pokusić się o napisanie pluginu do tumblera.
https://github.com/xfce-mirror/tumbler/tree/master/plugins
Plik dxf to jest plik wektorowy, czyli opisowy prawie taki sam jak np. svg (svg opisany jest w xml). To wystarczy mieć inkscape do generowania z dxf do png-ów, potrafi robić to bez gui (prawie), libreoffice i dia też to zrobi. Miałem kiedyś, tak z dekadę temu, konwerter z dxf do png napisany w pythonie, ale nie wiem gdzie jest, pewnie najlepiej by się nadawał do robienia tego. Próbuj na pojedynczych/małych ilościach i plikach zapasowych najlepiej.
==To jest tylko do zrobienia==
Teraz jak najprościej to zrobić, by działało tworzenie podglądu w menu thunarda myszką.
Zainstaluj.
apt-get install tumbler inkscape
Dlaczego inkscape, bo robi najładniejsze png-i, choć ma jeden mankament którego nie udało mi się zmienić, to pytanie wymagające potwierdzenia ok, gdy nic nie zmieniamy.
Ewentualnie libreoffice o czym niżej lub dia. Jak ktoś chce mieć podglądy filmów/dokumentów to jeszcze tumbler-plugins-extra.
Sprawdzić w thunar, czy po instalacji są podglądy jpg/png/svg i czy jest katalog .cache/thumbnails/normal
ls $HOME/.cache/thumbnails/
Do szybkiego sprawdzania i śledzenia błędów w thunar, można uruchomić przeglądarkę w terminalu:
thunar -q && thunar
Teraz skrypt.
nano /user/bin/minidxf
Wkleić to:
#!/bin/sh
for plik
do
if [ ${plik##*.} = "dxf" ]
then
md=$(printf "echo -n 'file://$plik'" | bash | md5sum | cut -d ' ' -f1)
inkscape -f $plik -z -e $HOME/.cache/thumbnails/normal/$md.png
fi
doneUprawnienia do uruchamiania.
chmod +x /user/bin/minidxf
Teraz plik uruchamiania.
nano /usr/share/applications/minidxf.desktop
Wkleić to (można dać ikonę):
[Desktop Entry] Name=minidxf Comment=miniaturki dxf Exec=/usr/bin/minidxf Icon= GenericName=minidxf Terminal=false Type=Application Categories=System;
Ustawienia w przeglądarce thunar.
Na pliku dxf prawy (później można zaznaczać kilka naraz) i "Otwórz za pomocą innego programu..." , wybrać z listy minidxf. Wiadomo później zmienić we "Właściwościach" pliku, by domyślnym był właściwy cad, a ten jako dostępna opcja.
Zamknąć przeglądarkę i otworzyć, podgląd powinien być, ewentualnie jak pisałem z opcją -q w terminalu. Przy powiększonych ikonach podgląd jest bardzo dobrze widoczny. Teraz można zaznaczać kilka plików dxf naraz do robienia podglądów, pamiętać o wyskakującym okienku przy korzystaniu z inkscape, w menu dostępne tylko dla plików dxf.
Plik jest przezroczysty, można dodawać tło (kolor) lub zmniejszyć wielkość (przy dużej ilości i słabym komputerze może mieć znaczenie), czytać manual lub opis na stronie:
https://inkscape.org/sk/doc/inkscape-man.html
Jest ta niedogodność z inkscape jak pisałem, wyskakuje okna i trzeba klikać ok. Można spróbować użyć do generowania podglądu libreoffice, nie ma pytań, ale robi słabsze podglądy i do nazwy dodaje starą cześć nazwy. Trzeba użyć choćby rename lub zwykłym mv zmienić.
==Tu można skończyć czytać==
Na próbę z libreoffice sprawdzić:
libreoffice --convert-to nazwa.png Jakiś_dxf --outdir /tmp/test.png
Można użyć nazwy soffice --convert-to..., to działa z openoffice też. Możesz sprawdzić dia.
dia plik.dxf -s 256x256 -e /tmp/test.png
Można użyć tych lub innego konwertera dxf do png.
Drugi sposób inny, dodanie do menu thunarda przez "Edycja" -> "Czynności".
nano /user/bin/minidxf2
Wkleić to:
#!/bin/sh md=$(printf "echo -n 'file://$@'" | bash | md5sum | cut -d ' ' -f1) inkscape -f $@ -z -e $HOME/.cache/thumbnails/normal/$md.png
Uprawnienia do uruchamiania.
chmod +x /user/bin/minidxf2
W thunar:
Edycja -> Czynności -> dodać coś w postaci /usr/bin/minidxf2 %f (ścieżka dla jednego bo i tak zrobi błędną nazwę przy wielu) -> "w zakładce wyświetlanie" -> "wzór pliku" wpisać *.dxf -> "typ elementów" najlepiej zaznaczyć wszystkie bo nie zawsze wyświetla bez tego w menu i tak będzie dostępne tylko dla plików dxf.
Teraz.
Na pliku dxf prawy wybrać minidxf2, potwierdzić ok. To jest dla zaznaczonego tylko jednego pliku. Do sprawdzenia wystarczy.
Ten dxf-thumbnailer.py nie robi lepszego pliku png z dxf od libreoffice, nie ze wszystkimi dxf-ami sobie dobrze radzi. Znacznie lepiej sprawdza się inkscape. Ale jakieś tam pn-gi z dxf robi, nie ma problemu by nim zastąpić inkscape.
Mam nadzieje że się nie pomyliłem, bo ja używam Gnome z nautilusem, a tam jest troszkę inaczej.
Offline



Użytkownik




Z tym inkspece z tego co zrozumiałem to generujemy te podglądy jednorazowo, potem przy każdym nowym pliku musimy ponownie zmieniać domyślną aplikację na minidxf?
Głównym celem do osiągnięcia w tym wątku jest generowanie miniatur z poziomu thunara bez tych całych zabiegów ze zmianą domyślnej aplikacji czy klikaniem prawym klawiszem myszy.
Na razie mamy zbiór programów i skryptów, które potrafią generować zrzut do png.
Teraz pozostaje tylko wykorzystać mechanizmy thunara aby robił to samodzielnie przy użyciu wymienionych wyżej narzędzi.
Z tego co widzę na razie nie mamy takiego rozwiązania.
Jeśli dobrze zrozumiałem obecnie do wyboru mamy dwie metody:
- stworzyć sobie plugin do tumblera (patrzyć w podlinkowanego gita)
lub
- używając wyżej podanych narzędzi (skryptów lub programów), wygenerować gotowy thumbnail(png) o nazwie pobranej z wyniku
echo -n 'file:///cała/ścieżka/pliku' | md5sum
i wrzucić do swojego katalogu ~/.thumbnails
Ostatnio edytowany przez arecki (2017-11-21 10:41:52)
Offline


Użytkownik



arecki: Z tym inkspece z tego co zrozumiałem to generujemy te podglądy jednorazowo, potem przy każdym nowym pliku musimy ponownie zmieniać domyślną aplikację na minidxf?
Nie, później jest dostępna zawsze jako opcja w menu (prawym na pliku/plikach dxf) w thunar. To jest rozwiązanie (przykład) najprostsze z najlepszym na razie konwerterem dxf do png, ale jak komuś przeszkadza pytanie to można zmienić na coś co nie będzie pytało, pisałem o tym. Można pisać plugin lub zmodyfikować skrypt by sam szukał zmian. Najważniejsze tak jak pisałem przy korzystaniu z tumblera jest tworzenie nazwy. Rozpisałem się po to by wyjaśnić jaki jest mechanizm, teraz jak ktoś ma czas niech robi to dalej, lub używa w sposób jaki opisałem. Może autorowi wątku takie rozwiązanie wystarczy.
Offline



Użytkownik




Ja to już sam z ciekawości chcę uruchomić u siebie, ale chciałbym aby mechanizm działania był taki sam jak dla innych typów plików (jpg, pdf itp.)
I teraz w związku z tym pytanie czy można to osiągnąć jedynie przez wspomniany plugin do tumblera?
O skryptach skanujących zmiany raczej zapomnijmy bo nie o taki mechanizm chodzi.
Na razie zrobiłem tak jak radziłeś:
echo -n 'file:///home/user/Dokumenty/DXF/R12_ASCII.dxf' | md5sum c2f7b98a0ee206f8cc4dca114bb39dd7
Nazwałem plik zrzutu na podstawie powyższego wyniku i wrzuciłem do
~/.cache/thumbnails/normal/
No i mam miniaturkę.
Jest to jakiś krok dalej, można to teraz sobie oskryptować, wrzucić pod prawy klawisz myszy, ale to wciąż nie to czego chcemy.
Ostatnio edytowany przez arecki (2017-11-21 18:39:51)
Offline