Chuyển đến nội dung
Diễn đàn CADViet

minhphuong_humg

Thành viên
  • Số lượng nội dung

    167
  • Đã tham gia

  • Lần ghé thăm cuối

Bài đăng được đăng bởi minhphuong_humg


  1. Xin chào các bác,


    Hôm nay em có vấn đề nay xin nhờ các Pro giúp đỡ. Em có vạch một tuyến đường trên bản vẽ. Giờ em muốn duỗi thẳng tuyến đường đó ra với khoảng cách ofset sang mỗi bên của tuyến đường là 100.


    Xin nhờ các bác trong diễn đàn viết giúp em một lisp để khi chọn vào tuyến đường cần duỗi thẳng thì cho ra kết quả đường duỗi thẳng.Tại mỗi vị trí nối giữa các đoạn thẳng sau khi duỗi thì cho ra một text ghi góc xoay (theo hướng đi của tuyến - ta hình dung đi từ đầu đến cuối tuyến nếu rẽ phải ghì là góc phải và rẽ trái thì là góc trái) của đoạn thẳng hợp với đoạn thẳng tiếp theo. Nếu xoay sang phải thì ghi P(góc xoay làm tròn đến phút); nếu xoay sang trái thì ghi T(góc xoay làm tròn đến phút). Phần độ thì ghi liền vào chữ viết tắt của góc xoay P (phải), T (trái) (xin xem bản vẽ đính kèm). 


    Rất mong nhận được sự giúp đỡ của các bác!


    Trân trọng cảm ơn!


    File: 


    http://www.mediafire.com/download/omynz9ma02u7tko/lt.dwg


     


    • Vote giảm 1

  2. Link mới đây bạn:

    http://www.cadviet.com/upfiles/3/71162_googleearth_converter_2.lsp

    Thông thường từ file tọa độ LatLong mình dùng lisp trên để convert thành file *.kml rồi mở bằng GoogleEarth là xong. Chưa bao giờ xuất file kml từ GE cả.

    Chào KangKung, mình đã check thử file số liệu mẫu bạn đính kèm. Kết quả cho ra như hình vẽ bạn xem có phải không?

     

    2883_ge.png

     

    Nếu đúng, thì mình nghĩ rằng Việt Nam mình cũng có nhiều số liệu để test chứ làm sao lại bay cả sang TQ để test chứ. :D

    Nếu chưa chính xác thì bạn chỉ mình nhé.

    Trân trọng.


  3. Lisp thêm tiền tố và/hoặc hậu tố cho DIMENSION, TEXT, MTEXT, ATTDEF.

    
    
    ;----- Add/Change Prefix and/or Suffix for DIMENSION, TEXT, MTEXT, ATTDEF. De tim hieu code >> nen mo trong Notepad++.
    ;----- Doan Van Ha - CadMagic - Ver.1: 15/9/2013
    (vl-load-com)
    (defun C:APS ( / dial flag lstobj lstkey lstvar fn Add_Prefix_Suffix SelectObj Ss->Lst Old_APS New_APS HA:SetVal Make_File_Dcl)
    ;----- Sub Functions
     (defun Add_Prefix_Suffix (lst pre suf add) ;Add Prefix vµ/hoÆc Suffix cho lstobj.
      (command "undo" "be")
      (if (and lst pre suf)
       (mapcar
       '(lambda (obj / typ txt pre1 suf1)
         (setq typ (cdr (assoc 0 (entget (vlax-vla-object->ename obj)))))
         (cond
          ((wcmatch typ "MTEXT,TEXT") (vla-put-TextString obj (strcat pre (vla-get-TextString obj) suf))) ;MultiLeader ???
          ((wcmatch typ "ATTDEF") (vla-put-TagString obj (strcat pre (vla-get-TagString obj) suf)))
          ((wcmatch typ "DIMENSION")
      (setq txt (cdr (assoc 1 (entget (vlax-vla-object->ename obj)))) pre1 (vla-get-TextPrefix obj) suf1 (vla-get-TextSuffix obj))
           (cond
            ((and (= txt "") (= add "0")) ; Nguyen thuy hoac da add pre/suf: Change
    (vla-put-TextPrefix obj pre) (vla-put-TextSuffix obj suf))
    ((and (= txt "") (= add "1")) ; Nguyen thuy hoac da add pre/suf: Add
    (vla-put-TextPrefix obj (strcat pre pre1)) (vla-put-TextSuffix obj (strcat suf1 suf)))
         (T ; Override: Add (not Change)
    (vla-put-TextOverride obj (strcat pre txt suf))))))
         (vlax-release-object obj))
        lst))
      (command "undo" "e"))
     (defun SelectObj (lstvar lstkey / txt lst) ;Chän ®èi t­îng.
      (setq txt (apply 'strcat (mapcar '(lambda(var key) (if (= var "1") (strcat key ",") "")) (mapcar 'eval lstvar) lstkey)))
      (setq lst (Ss->Lst (ssget (list (cons 0 txt))) T)))
     (defun Ss->Lst (ss flag / lst) ;Convert selection set to list vla-object
      (and ss (setq lst (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))
       (if flag (setq lst (mapcar 'vlax-ename->vla-object lst))))
      lst)
     (defun Old_APS() ;®Æt chƠ ®é nh­ c̣.
      (setq text_old text mtext_old mtext attdef_old attdef dimension_old dimension pre_old pre suf_old suf add_old add change_old change))
     (defun New_APS() ;®Æt chƠ ®é míi nh­ c̣".
      (setq text text_old mtext mtext_old attdef attdef_old dimension dimension_old pre pre_old suf suf_old add add_old change change_ols))
     (defun HA:SetVal (lstkey lstvar lstval) ;Set value_default or set value_old for var + Set_tile for key. EX: (HA:SetVal '("key1" "key2" "key3") '(var1 var2 var3) '("0" "1" "a"))
      (mapcar '(lambda (var val) (if (not (eval var)) (set var val))) lstvar lstval)
      (mapcar '(lambda (key val) (set_tile key (set (read key) val))) lstkey (mapcar 'eval lstvar)))
     (defun Make_File_Dcl ( / fn ow dial) 
      (setq fn (vl-filename-mktemp "APS" nil ".dcl"))
      (setq ow (open fn "w"))
      (mapcar
      '(lambda (x) (write-line x ow))
       (list
    "APS : dialog { label = \"CadMagic - Add prefix and suffix for objects\";"
    " : boxed_column { label = \"Set variable\";"
    "    : row {"
    "      : boxed_column { label = \"Dimension\";"
    "        : toggle { label = \"Dimension\"; key = \"dimension\"; }"
    "        : radio_row {"
    "          : radio_button { label = \"Add\";  key = \"add\"; }"
    "          : radio_button { label = \"Change\";  key = \"change\"; }"
    "        }"
    "      }"
    "      : boxed_row { label = \"Text/Mtext/Attdef\";"
    "        : toggle { label = \"Text\"; key = \"text\"; }"
    "        : toggle { label = \"Mtext\"; key = \"mtext\"; }"
    "        : toggle { label = \"Attdef\"; key = \"attdef\"; }"
    "      }"
    "    }"
    "    : column {"
    "      : edit_box { label = \"Prefix:\"; key = \"pre\"; edit_width = 45; }"
    "      : edit_box { label = \"Suffix:\"; key = \"suf\"; edit_width = 45; }"
    "    }"
    " : button { label = \"Select objects\"; key = \"chon\"; fixed_width = true; alignment = centered; }"
    "  }"
    "  ok_cancel;"
    "}"))
      (close ow)
      fn)
    ;----- Main Function.
     (setq dial (load_dialog (setq fn (Make_File_Dcl))) flag 3)
     (while (> flag 1)
      (if (not (new_dialog "APS" dial)) (exit))
      (Old_APS)
      (HA:SetVal (setq lstkey '("text" "mtext" "attdef" "dimension" "pre" "suf" "add" "change"))
                (setq lstvar '(text mtext attdef dimension pre suf add change)) '("0" "0" "0" "0" "Prefix" "Suffix" "1" "0"))
      (action_tile "text" "(setq text $value)")
      (action_tile "mtext" "(setq mtext $value)")
      (action_tile "attdef" "(setq attdef $value)")
      (action_tile "dimension" "(setq dimension $value)")
      (action_tile "pre" "(setq pre $value)")
      (action_tile "suf" "(setq suf $value)")
      (action_tile "add" "(setq add $value change \"0\")")
      (action_tile "change" "(setq change $value add \"0\")")
      (action_tile "Cancel" "(done_dialog 0)")
      (action_tile "Accept" "(done_dialog 1)")
      (action_tile "chon" "(done_dialog 2)")
      (setq flag (start_dialog))
      (cond ((= 0 flag) (New_APS))
            ((= 2 flag) (setq lstobj (SelectObj lstvar lstkey)))
            ((= 1 flag) (Add_Prefix_Suffix lstobj pre suf add))))
     (unload_dialog dial) (vl-file-delete fn) (princ))
    ;--------------------------------------------------------------------------------------------------------------------------------------
     

    Anh ơi, đây là lisp thêm tiền tố, hậu tố cho Dimension....Anh có thể thêm chức năng là remove tiền tố, hậu tố cho các trường hợp mà chúng (dimension..) đã có sẵn không ạ. Ví dụ: Em có các dimension với hậu tố là m (mét) em giờ muốn remove hết đi anh ạ.

    Khi em load lisp trên thì xuất hiện lỗi này:

    Command: ; error: syntax error

    Mong anh giúp đỡ.

    Trân trọng cảm ơn anh.


  4. Em có bản vẽ bao gồm các Dynamic Block và Attribute block. Nay em muốn các bác giúp em viết một lisp để xuất dữ liệu ra như hình vẽ và file đính kèm.

    Trân trọng cảm ơn.

    File ảnh:

    http://www.mediafire.com/view/bolzs7ao800xgdc/original.png

     

    File dwg:

    http://www.mediafire.com/download/2gr184zwr1qk1c1/Dynamic%20Block%20Full.dwg

     

    File Excel (2010):

    http://www.mediafire.com/view/epag21ja65775ol/Dynamic.xls


  5. Chào bạn minhphuonghung!

    Ý bạn là : Nếu định sửa text ATT 1 lần cùng giá trị thì cũng phải pick chọn từng cái rồi nhập giá trị thì các text ATT được pick đó thay đổi pk?

    Chào bác Tue_NV!

    Đúng ý em là như thế đấy ạ. Trong lisp edt thì chỉ cho chọn 1 text rồi sửa trực tiếp luôn. Thật ra, nó giống như cái lệnh EdATT trong attribute_modification_suite_v6.lsp ấy ạ. Nhưng EDATT lại có nhược điểm là chọn được các text cùng một lúc để đưa về cùng một giá trị, thay vì chuột phải thì chúng ta lại phải nhấn Enter, làm như vậy thành ra em thấy đang dùng chuột để Select thì lại phải dùng tay Enter một cái.

    Nói chung, nhu cầu của em không phức tạp như lệnh EDATT chỉ cần như cái lệnh edt rồi thêm chức năng là select nhiều text để chuyển về cùng một giá trị thôi ạ.

    Cảm ơn bác nhiều.


  6.  

    Trong block có sử dụng nhiều text attribute thì việc gõ ed để sửa nội dung hơi vất vả một chút.

    Đây là đoạn code để edit trực tiếp vào các text attribute do ta chọn bằng cách pick chuột.

    (defun c:edt () (while (setq att (car(nentsel "\nChon text Attribute :")))(if (= (dxf 0 att) "ATTRIB")(progn     (setq 	TagName (dxf 2 att)	TagVal (dxf 1 att)	BlName (dxf 330 att))     (if 	(setq NewVal (getstring 5 (strcat "\nNhap gia tri moi cho " TagName " <" TagVal "> : ")) )	(putAtt BlName TagName NewVal));if);progn);if);while(princ) );end;------------------------------------------------------------------------------------------(defun dxf(id ent) (cdr (assoc id (entget ent))));------------------------------------------------------------------------------------------(defun putAtt (BlName TagName NewVal / AttName EntDxf dk)(setq AttName (entnext BlName ) dk 1)  (while (and AttName dk)    (if (equal (assoc 0 (entget AttName )) '(0 . "SEQEND"))        (setq AttName nil )        (if (= (cdr (assoc 2 (entget AttName ))) TagName ) ; <-- Your Attribute name            (progn              (setq EntDxf (entget AttName ) dk nil)              (setq EntDxf (subst (cons 1 NewVal ) (assoc 1 (entget AttName )) EntDxf ) )              (entmod EntDxf )              (entupd BlName )              (setq AttName (entnext AttName ))            );progn        (setq AttName (entnext AttName ))        );if    );if          );while      );end
    Tuy nhiên lisp này phải gõ nội dung cần thay đổi ở dòng command.

    Giờ em muốn thực hiện việc này thông qua một hộp thoại. hộp thoại đó có 2 nút Cancel và OK.

    Xin nhờ các huynh viết hộ cái này, em không có rành khoản này lắm.

    Lisp sử dụng rất đơn giản và tiện. Nhưng có một điều là nếu như ta cùng sửa text ở >1 block khác nhau thì ta lại phải chọn từng cái một. Anh có thể sửa thêm chức năng nữa là cho chọn những text (định sửa có cùng giá trị) sau đó nhập vào không ạ? 


  7. Hề hề hề,

    Xin chào anh chị và các bạn,

    Em có một bản vẽ với các Dimension và các Block. Em muốn nhờ anh chị và các bạn viết giúp em một lisp để lựa chọn các Dimension và các Block đó sau đó xuất ra kết quả như file excel đính kèm.

    Trân trọng cảm ơn!

    File đính kèm:

    http://www.cadviet.com/upfiles/3/2883_high.rar

    Đối tượng của bạn là một ACAD_PROXY_ENTITY chứ không phải block thuộc tính.

    Cảm ơn anh Thanh Bình.

    Đúng là em không biết nó là  ACAD_PROXY_ENTITY. Em tìm thấy cái đó (vòng tròn) nó phù hợp cho việc điền số liệu (như trong bản vẽ) cần thiết nên em cứ nghĩ nó là Block.

    Anh cho em hỏi là có thể tạo được Block GIỐNG như vậy không ạ? Tức là nó cũng bao gồm các thành phần như vậy. Ta có thể nhắp đúp vào để nhập số liều. Và sau đó là xuất các thuộc tính đó quá excel ạ.

    Nếu được, anh có thể hướng dẫn em các tạo block như vậy được không ạ.

    Em cảm ơn anh trước nhé.


  8. Xin chào anh chị và các bạn,

    Em có một bản vẽ với các Dimension và các Block. Em muốn nhờ anh chị và các bạn viết giúp em một lisp để lựa chọn các Dimension và các Block đó sau đó xuất ra kết quả như file excel đính kèm.

    Trân trọng cảm ơn!

    File đính kèm:

    http://www.cadviet.com/upfiles/3/2883_high.rar


  9.  

     

     

    Ðây bạn:

    (defun C:HA( / lst fn fw index x y z txt)	;Doan Van Ha Cadviet.com
     (princ "\nChon cac Text/Mtext/Dimension can xuat ra file...")
     (setq lst (acet-ss-to-list (ssget '((0 . "*TEXT,DIMENSION"))))
           	fn (getfiled "Chon file de save" "" "csv" 1)
           	fw (open fn "w")
           	index 0 x 1 y 1 z 1)
     (repeat (length lst)
      (cond
       ((= (cdr (assoc 0 (entget (nth index lst)))) "TEXT") (setq txt (strcat (cdr (assoc 1 (entget (nth index lst)))) "," "text" (itoa x)) x (1+ x)))
       ((= (cdr (assoc 0 (entget (nth index lst)))) "MTEXT") (setq txt (strcat (cdr (assoc 1 (entget (nth index lst)))) "," "mtext" (itoa y)) y (1+ y)))
       ((= (cdr (assoc 0 (entget (nth index lst)))) "DIMENSION")
    	(if (= (cdr (assoc 1 (entget (nth index lst)))) "")
     	(setq txt (strcat (rtos (cdr (assoc 42 (entget (nth index lst))))) "," "dim" (itoa z)) z (1+ z))
     	(setq txt (strcat (cdr (assoc 1 (entget (nth index lst)))) "," "dim" (itoa z)) z (1+ z)))))
      (princ (strcat txt "\n") fw)
      (setq index (1+ index)))
     (close fw))
    

    Nhờ Bác Doan Van Ha và các Bác trong diễn ðàn có thể giúp em sửa lisp này với mục ðích sau ðýợc không ạ:

    Trýờng hợp 1 [select từng Dimension):

    Lựa chọn (Select) Số thứ tự rồi chọn Dimension. Cuối cùng xuất ra file excel có dạng:

    STT   Khoảng cách

    5    37

    6    26

    7    29

    8    34

    .........

    Trýờng hợp 2 [select Ðiểm ðầu - Ðiểm cuối]:

    Lựa chọn (Seclect) Dimension ðầu tiên (Dimension 1) rồi chọn Dimension cuối (Dimension n). Cuối cùng cho ra file excel có dạng:

    STT                               Khoảng cách

    Dimension 1                  37

    Dimension 2                  26

    Dimension 3                  29

    Dimension 4                  37

    Dimension 5                  32

    ..........................................

    Dimension 29                40

    Link file:

    http://www.cadviet.com/upfiles/3/2883_hoi_3.dwg

    Em trân trọng cảm õn!


  10. Mình có file này muốn xuất ra file excel với 2 cột là STT và Khoảng cách được không ạ?

    Ví dụ:

    STT          Khoảng cách

    1.1          0

    1.2          61

    1.3          66

    1.4          60

    1.5          52

    ......

    Xin các bác trong diễn đàn giúp đỡ ạ.

    Trân trọng cảm ơn.

    File: http://www.cadviet.com/upfiles/3/2883_s.dwg


  11. Em rất cảm ơn bác Doan Van Ha, em đã xem và đăng kí và làm theo link mà bác gửi cho em. Tuy nhiên, theo thiển ý của em chắc là họ làm bằng một cái phần mềm gì đó bác nhỉ? Chứ em thấy nếu giả sử họ làm bằng cái này chắc không được như trên VTV. Rất  mong anh chị nào đã từng làm hoặc biết thì mong chỉ bảo thêm ạ.

    • Vote giảm 1

  12. Nhưng Bác Doan Van Ha ơi, làm sao để extract ra được một "mảng" ảnh to, dài như vậy để đưa vào PowerPoint ạ? Em vẫn chưa hiểu cách làm để extract ra được tấm ảnh đó. Giả sử, ta làm video hướng dẫn đường đi theo Quốc lộ 1 từ Lạng Sơn tới TP. HCM chẳng hạn thì ta làm sao mà zoom lên được ạ? 

    Rất mong bác và các anh chị trong diễn đàn hướng dẫn ạ.

    Trân trọng cảm ơn.


  13. Hôm trước mình xem trên chương trình thời sự có đoạn video về lộ trình rước linh xa của Đại tướng Võ Nguyên Giáp được làm trên nền Maps Google. Tuy nhiên, mình không biết chúng đuợc làm bằng phần mềm gì và làm như thế nào? Member nào biết rất mong được chỉ dạy.

    Trân trọng cảm ơn.

    http://www.youtube.com/watch?v=iuGPjVNZ0_g


  14. Mình ko dùng Cad2014 nên bạn hỏi mình ko trả lời đc. Tuy nhiên 2014 cao hơn 2004 nên mình nghĩ là được. Bạn hình như vẫn ko test nhỉ?

    Không phải hình như, mà là mình chưa test. Bởi lẽ, như mình trao đổi ở trên nếu có mem nào dùng Cad2014 rồi mà không cài được thì khuyến cáo mình thì mình sẽ không cài nữa. Vì thật ra, cài xong rồi mà nó không làm việc trên phiên bản của mình có phải là không tốt không? Còn nếu, chưa có mem nào thử thì mình sẽ là người thử đầu tiên. Và dĩ nhiên, lần sau khi gặp câu hỏi tương tự thì mình cũng đưa ra khuyến cáo cho mọi người thôi. Trân trọng.


  15. Phiên bản Autocad 2004 cũng được nhưng phải cài Tools Express. Còn 2007 trở lên thì vô tư. Bạn download về dùng biết ngay được hay ko được. ^^

    Bạn ơi, Autocad 2014 chứ không phải Autocad 2004 bạn à. Mình hỏi để biết xem nó dùng được cho phiên bản nào. Còn giả sử không tương thích với phiên bản nào các bạn nào cài trước thì chia sẻ cho mọi người cùng biết. Trân trọng cảm ơn!


  16. Phần mềm EGS 58Mb nên hơi nặng một chút. Nó tích hợp vào Cad và thực hiện rất nhiều chức năng. Bạn đợi sau 90s thì load về.

    Mình đã thử đường link chạy rất tốt. Mình sẽ upload huớng dẫn sử dụng vào 1 ngày gần nhất có thể. Chúc bạn gặp nhiều may mắn

    Bạn ơi, cho mình hỏi cái này nó chạy trên Autocad phiên bản nào vậy hay là Autocad phiên bản nào cũng dùng được? Mình đang dùng autocad 2014 thì có dùng được không? Trân trọng cảm ơn.


  17. :D :D :D

    Bạn đưa file gốc lên nhé. Chứ file này 2 lúa thấy ko có lỗi j.

    :D :D :D

    Xin lỗi anh vì hôm trước em gửi nhầm cái file bị mất cái block ở chân cột đèn. Em gửi lại anh file gốc và file ở trên là file sau khi em chuyển. Rất mong nhận được sự giúp đỡ.

    File gốc:http://www.cadviet.com/upfiles/3/2883_01_mbcs_tong_the__1.dwg


  18. Tôi chỉ nghe nói thôi, chưa bao giờ gặp trường hợp này.

     

    Bạn hãy gửi cho chúng tôi một file DWG bất kỳ có chữ này được không?

     

    Nếu không, bạn hãy thử làm ngay như sau: Save as sang AutoCAD 14, ở đời này (R14) chưa có phiên bản dành cho Education. Sau đó thì in bằng AutoCAD 14 hoặc wblock ra file CAD khác rồi in bằng CAD đời mới. Cách này nói chung sẽ vượt qua được các sự bảo vệ file CAD. Tuy nhiên nếu file CAD có sử dụng một số đối tượng mới thì các đối tượng này sẽ bị Disable.

    Chào anh, em có một file bị lỗi tương tự. Tuy nhiên, em áp dụng cách như các bạn hướng dẫn ở các bài sau nhưng kết quả thì mất được các chữ ở viền. Nhưng không hiểu sao các block lại bị mất hết. Trong bản vẽ em gửi kèm, nếu ta chuyển theo thao tác tương tự thì các hình tròn màu đỏ ở chân cột đèn sẽ bị mất hết. Em rất mong nhận được sự giúp đỡ của anh. Trân trọng cảm ơn.

    http://www.cadviet.com/link/?f=upfiles/3/110802_2883_01_mbcs_tong_the_.dwg&w=3774

×