Đã bao giờ bạn phải chỉnh sửa một file Word có sẵn mà nó không chịu theo ý mình? Những chỉnh sửa nhỏ nhỏ và cơ bản dưới đây sẽ giúp bạn cách thức chỉnh sửa một file Word có sẵn theo ý của bạn. Để làm chủ Word và xử lý văn bản nhanh bạn cần có những kiến thức cơ bản về Word. Những kiến thức đó không đề cập ở đây và sẽ được viết trong một bài viết khác.
Word là một chương trình tương đối dễ sử dụng nằm trong bộ Microsoft Office. Nhưng để sử thành thạo Word cần có một khoảng thời gian sử dụng và học cách làm chủ nó tương đối. Để chỉnh sửa những văn bản dài, những báo cáo cả trăm trang thì chỉnh sửa định dạng thủ công rất mất thời gian. Tôi đã từng gặp nhiều người ngồi cặm cụi làm cái mục lục của Word hoàn toàn thủ công bằng cách ngồi kiểm tra cả trăm trang.
Tôi nhớ từng đọc đâu đó hình như slogan của Evernote là “Remember Everything”. Đó chính là tựa tiếng việt của bài viết đầu tiên trong chuỗi bài viết về Evernote mà tôi muốn chia sẻ với các bạn.
Cuộc sống và công việc vốn dĩ có rất nhiều thứ để nhớ. Trí nhớ của tôi không thực sự tốt lắm và đôi lúc bẵng đi một việc gì đó hay một thứ gì đó hay ho.
Đôi khi mình không thể nào cài đặt hoặc gỡ cài đặt các sản phẩm của Autodesk theo cách thông thường. Có lẽ Autodesk cũng nhận được nhiều lời than phiền như vậy nên họ đã tích hợp công cụ gỡ cài đặt trong sản phẩm của họ (hình bên dưới)
Từ khi biết đến công cụ này mình thường sử dụng nó để gỡ các sản phẩm của Autodesk khi gặp sự cố và muốn cài đặt lại.
Mình thường nhận được một bản vẽ Autocad với nhiều bản vẽ trên nhiều layout khác nhau. Vì quản lý bản vẽ bằng Sheet Set Manager nên mình phải làm công việc sắp xếp lại và tách chúng ra thành những bản vẽ riêng biệt. Mỗi bản vẽ nằm trên một layout.
Có vài ba LISP thực hiện việc này nhưng sau một thời gian sử dụng và kiểm thử mình sử dụng đoạn LISP bên dưới.
Sau khi tách các bản vẽ nằm trên những layout khác nhau, mình dùng LISP này để xóa những đối tượng không nằm trong viewport của layout để giảm nhẹ dung lượng bản vẽ.
Công dụng - Xóa các đối tượng không nằm trong viewport của layout
(defun c:DelObjectsNotOnAnyViewport () (setq ssview (ssadd)) (setvar 'ctab "MODEL") (setq app (vlax-get-acad-object)) (vlax-for lay ; for each layout (vla-get-layouts (vla-get-activedocument (vlax-get-acad-object))) (setq id1 nil) ; ignore the first vp (if (eq :vlax-false (vla-get-modeltype lay)) (progn (vlax-for obj (vla-get-block lay) ; for each obj in layout (if (and (= (vla-get-objectname obj) "AcDbViewport") (or id1 (not (setq id1 t))) ; ignore first viewport because that is the viewport tab itself ) (progn (vla-GetBoundingBox obj 'LPVP 'UPVP) (setq LPVP (vlax-safearray->list LPVP)) (setq UPVP (vlax-safearray->list UPVP)) (setq LPMODEL (PCS2WCS LPVP (vlax-vla-object->ename obj))) (setq UPMODEL (PCS2WCS UPVP (vlax-vla-object->ename obj))) (setq minx (car LPMODEL)) (setq maxx (car UPMODEL)) (setq miny (cadr LPMODEL)) (setq maxy (cadr UPMODEL)) (setq pt1 (list minx miny)) (setq pt2 (list maxx miny)) (setq pt3 (list maxx maxy)) (setq pt4 (list minx maxy)) (vla-zoomwindow app (vlax-3d-point pt1) (vlax-3d-point pt3)) (if (setq ss (ssget "_CP" (list pt1 pt2 pt3 pt4) (list (cons 410 "MODEL")))) (setq ssview (kdub:ssunion ssview ss)) ) ) ) ) ) ) ) (setq ssall (ssget "_X" (list (cons 410 "MODEL")))) (setq sstodel (kdub:sssubtract ssall ssview)) (repeat (setq n (sslength sstodel)) (setq ent (ssname sstodel (setq n (1- n)))) (entdel ent)) ) ;;; Union of two selection sets (defun kdub:ssunion (ss1 ss2 / ss index) ;;; Source : http://www.
Trong quá trình viết font tiếng việt một nét cho AutoCad tôi gặp phải vấn đề là lấy tọa độ tương đối của một điểm so với điểm trước đó. Dưới đây là đoạn LISP thực hiện chức năng đó. File đính kèm tải bên dưới
;;;RELATIVE COORDINATE === lay toa do tuong doi cua mot diem so voi diem truoc do (defun C:RC () (setvar "hpbound" 1) (setvar "cmdecho" 1) (setq pnt1 (getpoint "\nPick datum point: ")) ;;;(setq ref1 (getpoint "\nEnter datum elevation of cross section:")) ;;; (setq ref1 (getreal "\nEnter datum elevation of cross section:")) ;_ it is a real (setq p1x (car pnt1)) ;;x coord (setq p1y (cadr pnt1)) ;;y coord (while (setq pnt2 (getpoint "\nPick coordinate point: ")) (setq p2x (car pnt2)) ;;x coord (setq p2y (cadr pnt2)) ;;y coord ;;(setq dx (rtos (- (p1x p2x)) 2 2)) ;; it shall be so ;;;(setq dx (rtos (- p1x p2x) 2 2)) dong comment nay cua file goc (setq dx (rtos (- p2x p1x) 2 2)) ;;(setq dy (rtos (+ ((- (p1y p2y)) ref1)) 2 2)) ;; it shall be so ;;; (setq dy (rtos (+ (- p1y p2y) ref1) 2 2)) dong comment nay cua file goc (setq dy (rtos (- p2y p1y) 2 2)) ;;(setq STDZ (rtos P1z 2 2)) (setq COORDN (strcat "Y " dy)) (setq COORDE (strcat "X " dx)) ;;(setq COORDZ (strcat "Z " STDZ )) (setq PTXT (getpoint "\nPick text location: ")) (command "LEADER" pnt2 PTXT "" COORDE COORDN "") ) ;while (princ) )
Chuyển google site qua Hugo
Công cụ cần có:
VPS chạy Ubuntu Công cụ dùng để trích xuất nội dung googlte site:
https://github.com/famzah/google-sites-backup Chuyển nội dung trích xuất sang markdown: https://github.com/foursquare/sites-to-markdown
Dùng Putty để login vào VPS
Hướng dẫn sử dụng công cụ backup google site
http://alvaro.cat/en/blog/google-sites-backup.html
Sau khi đã tải hết dữ liệu của google site về dưới dạng html, tôi dùng sites to markdown để chuyển những nội dung tải về thành file markdown để đưa vào phần nội dung trong Hugo.