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

kphat369

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

    13
  • Đã tham gia

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

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


  1. Chào các bạn!

     

    Mình đã tìm thấy nhiều lisp như thế này trên diễn đàn. Nhưng nếu pick từng điểm thì mất nhiều thời gian quá và cũng không kèm theo tên điểm thể hiện trên cad qua excel. Còn nếu dùng lệnh cad thì không biết tọa độ đó là của điểm nào.

     

    Mình có xin được 1 lisp dùng chuyển Text cad sang file excel có kèm theo tọa độ điểm chèn text đó. Ở file excel: Cột A ghi nội dung text-(tên điểm cần lấy tọa độ), cột B,C,D là tọa độ X,Y,Z của điểm chèn text đó.

     

    Như vậy, từ lisp này, các bạn có thể giúp mình: Thay vì lấy tọa độ của điểm chèn text, ta có thể lấy tọa độ của đối tượng gần text nhất (Ví dụ là điểm tâm đường tròn, điểm dạng point, điểm cắt nhau của 2 đường). Tai đây, Các bạn cho mình thêm dòng nhắc chọn loại đối tượng để lấy tọa độ, đáp c thì sẽ lấy tọa độ của tâm đường tròn nằm gần text đó nhất.

     

    Và sửa thêm giúp mình tọa độ ra excel lấy 4 số lẽ sau hàng đơn vị luôn ạ.

     

    Mình không biết add hình, mong các bạn thông cảm.

      http://www.cadviet.com/upfiles/7/58881_text_cad_sang_excel_ttx.lsp

     

    Cảm ơn các bạn!

    • Vote giảm 1

  2. Bạn làm được chưa?

    Mình chỉ bạn cách  thực hiện này đơn giản.

    1. Mình biết ý bạn là muốn chỉnh từng đối tượng nên bạn đã không hài lòng với các câu trả lời trên.

    * Cách hiệu chỉnh chữ cho từng đối tượng chữ:

    - Đầu tiên, bạn phải mở chức năng Quick Properties lên bằng tổ hợp phím Ctrl+shift+p (on/of)

    58881_1.png

    - Sau khi mở chức năng này. Khi bạn bấm vào đối tượng nào thì sẽ có 1 hộp Quick Properties xuất hiện. Bạn điều chỉnh nó ở đây. Do bản Quick Properties của bạn chưa cài đặt các chi tiết cần thiết. để cài bạn làm tiếp như sau:

    - Khi xuất hiện bản Quick Properties, bạn bấm vào nút cútomize (gần dấu thoát x)

    58881_2.png

    Hộp thoại mới xuất hiện. Bên trái bạn chọn kiểu đối tượng nào thì bên phải xẽ xuất hiện các type tương ứng của đối tương đó. ví dụ ạn chọn text, bên trái xuất hiện các type của text như hình

     

     


  3. Còn nhiều nữa chưa hết đâu, anh cứ mạnh dạn pót tiếp lên em sẽ bổ xung sau!

    Anh autoTay.com ơi! đây là vấn đề mình cần đây. Trước đây mình có câu hỏi nhưng ở CADViet forum > AutoCAD > dành cho người mới bắt đầu. Nay mình hỏi anh autoTay nhé!

    Nguyên văn:

    Mình vẽ CAD nhưng mình không có học qua trường lớp nào cả. Chủ yếu là học trên diễn đàn CADVIET. Rất cảm ơn anh em trong diễn đàn.

    Nay mình có cái này cần giúp đỡ:

    Khi đặt lại trục tọa độ (ví dụ trục tọa độ ngược X = -Y và Y=-X), khi ghi kích thước thì chử số kích thước cũng ngược theo trục tọa độ. Mình muốn sử dụng trục TĐ ngược đó mà số kích thước vẫn đọc được. Mình nhớ có lần đọc ở đâu đó có đăt lại biến hay gì đó để chử số kích thước không bị ảnh hưởng dù có đổi trục tọa độ. mấy ngày nay tìm lại hoài mà không thấy

    Mình không biết gửi hình hay file như thế nào. Mong anh em hiểu và giúp mình

    Trân trọng!!!

    ..........

    Rất xin lỗi anh hoan2182. bây giờ thì mình biết nhiều qui định trong này hơn rồi (và biết gửi file)

    Cảm ơn anh nhé!

    Cảm ơn bạn hdg2318 về cái lisp, nhưng vẫn chưa đươc bạn ạ. Xin gửi file ở đây nhé

    http://www.cadviet.com/upfiles/3/drawing2_13.dwg

    À quên. Mình sử dụng nó để tính toán, các tọa độ tuyệt đối trong công trình xây dựng. Mình là nhân viện trắc đạc. Trong lúc đo, mình rất cần tọa độ tại vị trí đó theo hệ tọa độ nào đó và rất nhiều lần lập lai như thế. hiện nay mình đang dùng lệnh id rồi chép từ dòng command ra thì lâu.

    Mình nhớ là sử dụng lệnh gì đó rồi gán biến cũng gióng như Mirrtext nhưng không phải


  4. lisp trên chỉ quay text 180 độ, áp dụng với trường hợp bị ngược như hình vẽ. trường hợp của bạn thì phải mirror, cái này không biết có đc không nữa.

    drt.png

    lisp này không sử dụng được vấn đề đó khi xoay tọa độ được bạn ạ. Mình nhớ là gán biến cho cái gì đó... mình sẽ tiếp tục đọc help của cad. Nhưng khổ nỗi trình độ anh văn mình kém lắm.

    Chào Bạn!


  5. Ồ anh cẩn thận quá, chẳng có gì phải xin lỗi em cả, anh a!

    Em đã nói thẳng, nói quá lời ra như thế, để hiều công việc của anh thôi, có gì kô phải cũng mong anh thông cảm.

    Giả dụ vẽ ở toạ độ ngược như anh đã làm, vẽ xong gõ lệnh Plan rồi Enter 2 lần cho nó về toạ độ bình thường để ghi kích thước và viết chữ không được hay sao, có khó khăn vướng mắc gì???

    Đúng là sử dụng Plan/enter 2 lần. Mình sẽ làm thế.

    Nhưng nói thêm để hoan2182 hiểu nỗi khổ của mình nhe!

    Mình thường sử dụng file cad của Thiết kế và mở ra trực tiếp tại công trường (vừa lấy số liệu trên máy vừa làm ra thực địa) và phải kiểm tra trên bản vẽ cứng (bản vẽ giấy).

    Để lấy vị trí điểm A theo góc tọa độ O1(X1,Y1) thì phải Plan và enter 2 lần. Lúc này các kích thước cũ (của Thiết kế hay nói đúng hơn là tất cả các kíh thước ghi lúc không phải sử dụng hệ tọa độ này) đều không đọc được. Thế là ta phải chuyển lại như ban đầu. Như thế, một buổi làm việc có khi làm rất nhiều lần thế này mà hướng nhìn cũng bị thay đổi, rất khó làm việc cùng tư vấn giám sát được.

    Mong Hoan2182 hiểu để đừng nói là mình bảo thủ nhé.

    Thân chào!!!


  6. Rất xin lỗi anh hoan2182. bây giờ thì mình biết nhiều qui định trong này hơn rồi (và biết gửi file)

    Cảm ơn anh nhé!

    Cảm ơn bạn hdg2318 về cái lisp, nhưng vẫn chưa đươc bạn ạ. Xin gửi file ở đây nhé

    http://www.cadviet.com/upfiles/3/drawing2_3.rar

    À quên. Mình sử dụng nó để tính toán, các tọa độ tuyệt đối trong công trình xây dựng. Mình là nhân viện trắc đạc. Trong lúc đo, mình rất cần tọa độ tại vị trí đó theo hệ tọa độ nào đó và rất nhiều lần lập lai như thế. hiện nay mình đang dùng lệnh id rồi chép từ dòng command ra thì lâu.

    Mình nhớ là sử dụng lệnh gì đó rồi gán biến cũng gióng như Mirrtext nhưng không phằi


  7. Mình vẽ CAD nhưng mình không có học qua trường lớp nào cả. Chủ yếu là học trên diễn đàn CADVIET. Rất cảm ơn anh em trong diễn đàn.

    Nay mình có cái này cần giúp đỡ:

    Khi đặt lại trục tọa độ (ví dụ trục tọa độ ngược X = -Y và Y=-X), khi ghi kích thước thì chử số kích thước cũng ngược theo trục tọa độ. Mình muốn sử dụng trục TĐ ngược đó mà số kích thước vẫn đọc được. Mình nhớ có lần đọc ở đâu đó có đăt lại biến hay gì đó để chử số kích thước không bị ảnh hưởng dù có đổi trục tọa độ. mấy ngày nay tìm lại hoài mà không thấy

    Mình không biết gửi hình hay file như thế nào. Mong anh em hiểu và giúp mình

    Trân trọng!!!

    • Vote giảm 1

  8. mấy bác cho e hỏi làm sao tạo block giấu phần cắt đi. em sử dụng file thiết kế có 1 block thể hiện 1dầm có ký hiệu cắt bớt đoạn giữa dầm và trên block không thể hiện đoạn đó. nhưng khi em nổ block đó ra thì dầm đó thể hiện nguyên dầm. Cách tạo như thế nào vậy bác.

    Cảm ơn


  9. Tôi có sử dụng một LISP để xác định toạ độ của các điểm trên bản vẽ, nhưng vướng ở chỗ là toạ độ không đồng nhất, và sau khi chỉ điểm và lôi toạ độ ra thì tuỳ theo hướng kéo toạ độ mà cách hiển thị toạ độ khác nhau, không giống nhau. Nhờ mọi người cho cách căn chỉnh các vị trí hiển thị của X, Y , Z sao cho thẳng cho dù ở bất kì điểm nào, kéo toạ độ theo bất cứ huớng nào.

    Cảm ơn nhiều

    LISP như sau:

    (DEFUN C:DSD()

    (prompt"\nGet EAST and NORTH of selected point utility")

    (defun SETERR(s)

    (if (/= s "Function cancelled")

    (princ (strcat "\nError: " s))

    ); of If

    (setq *error* oer seterr nil)

    (princ)

    ); of SETERR

    (setvar "Textstyle" "Romans")

    (setq oer *error* *error* seterr)

    (setq ts (* (getvar "DIMTXT") (GETVAR "DIMSCALE"))) ;dimension text size

    (setq pt1 (getpoint "Pick a point for getting information:\n"))

    (setq pt2 (getpoint pt1 "Pick a point for display information:\n"))

    (setq px (car pt1))

    (setq py (cadr pt1))

    ;****** real to string

    (setq pxt (strcat "E: " (rtos px 2 (getvar "luprec")))) ;x value

    (setq pyt (strcat "N: " (rtos py 2 (getvar "luprec")))) ;y value

    (setq pxy (strcat "E: " pxt)) ;x value

    (command "dim1" "leader" pt1 pt2 "" pxt)

    (command "EXPLODE" "L")

    (setq txtpnt (cdr (assoc 10 (entget (entlast))))) ;text location

    (setq txtpnt1 (list (car txtpnt)

    (- (cadr txtpnt) (* 2.0 ts)) 0.0)) ;y distance

    (command "TEXT" "ML" txtpnt1 ts "0.0" pyt) ;y printing

    (setq *error* oer seterr nil)

    (princ)

    )

     

    ;*********************************************

    (DEFUN C:SSD()

    (prompt"\nGet EAST,NORTH and ELEVATION of selected point utility")

    (defun SETERR(s)

    (if (/= s "Function cancelled")

    (princ (strcat "\nError: " s))

    ); of If

    (setq *error* oer seterr nil)

    (princ)

    ); of SETERR

    (setq oer *error* *error* seterr)

    (setq ts (* (getvar "DIMTXT") (GETVAR "DIMSCALE"))) ;dimension text size

    (setq pt1 (getpoint "Pick a point for getting information:\n"))

    (setq pt2 (getpoint pt1 "Pick a point for display information:\n"))

    (setq px (car pt1))

    (setq py (cadr pt1))

    (setq pz (caddr pt1))

    ;****** real to string

    (setq pxt (strcat "E: " (rtos px 2 (getvar "luprec")))) ;x value

    (setq pyt (strcat "N: " (rtos py 2 (getvar "luprec")))) ;y value

    (setq pzt (strcat "EL.: " (rtos pz 2 (getvar "luprec")))) ;z value

    (setq pxy (strcat pxt)) ;x value

    (command "dim1" "leader" pt1 pt2 "" pxt)

    (command "EXPLODE" "L")

    (setq txtpnt (cdr (assoc 10 (entget (entlast))))) ;text location

    (setq txtpnt1 (list (car txtpnt)

    (- (cadr txtpnt) (* 2.0 ts)) 0.0))

    (command "TEXT" "ML" txtpnt1 ts "0.0" pyt) ;text input (print)

    (setq txtpnt2 (list (car txtpnt1)

    (- (cadr txtpnt1) (* 2.0 ts)) 0.0))

    (command "TEXT" "ML" txtpnt2 ts "0.0" pzt)

    (setq *error* oer seterr nil)

    (princ)

     

    )

    (Prompt"\nDSD--> Get East, North.")

    (Prompt"\nSSD--> Get East, North, Elevation.\n")

    ;*******************************************************************************

     

     

    *****

    mình không tự viết được, nhưng có cho bạn đây. lệnh td

    ;This function is used to pick up coordinates(X,Y)

    ;then display coordinates on drawing

    ;

    (defun C:td(/ PNT1 P1X P1Y STDX STDY COORDN COORDE PTXT)

    (setq PNT1 (getpoint

    "\nPick coordinate point: "))

    (setq P1Y (cadr pnt1)) ;Y coord

    (setq P1X (car pnt1)) ;X coord

    (setq STDX (rtos P1X 2 3))

    (setq STDY (rtos P1Y 2 3))

    (setq COORDN (strcat "X""="STDX ))

    (setq COORDE (strcat "Y""="STDY ))

    (setq PTXT (getpoint

    "\nPick text location: "))

    (command "LEADER" PNT1 PTXT "" COORDN COORDE "")

    (princ)

    )

    • Vote tăng 1

  10. Bạn có thể dùng cách chuyển trục tọa độ như của bạn ndtnv. (nhớ đặt tên trục tọa độ để tiện gọi trở ra) (ucs=>NAmed=>Save=>"tên trục tọa độ đang sd"

    Muốn gọi (sử dụng) hệ tọa độ đã đặt tên, dùng lệnh DDUCS, hộp thoại đưa ra danh sách các hệ tọa độ, chỉ việc click đúp vào hệ cần dùng OK

    Có thể dùng đoạn mã sau thì sẽ nhanh hơn vì tự động đánh số thứ tự:

    (defun c:xy (/ x y coc i p str f)

    (setq fn (getfiled "Ghi so lieu ra file " "Toa_do" "txt" 1))

    (setq f (open fn "w"))

    (write-line fn f)

    (write-line (strcat "TOA DO" "\t\t" "x" "\t\t" "y") f)

     

     

    (setq i 0)

    (while (setq p (getpoint "\n Chon diem ghi toa do:"))

    (setq x (rtos (car p) 2 3))

    (setq y (rtos (cadr p) 2 3))

    (Setq i (1+ i))

    (setq coc (strcat "toa do diem thu " (if (< i 10) (strcat "0" (itoa i)) (itoa i))))

    (setq str (strcat coc "\t" x "\t" y))

    (prompt str)

    (write-line str f)

    )

     

     

    (close f)

    (startapp "C:\\windows\\Notepad.exe" fn)

    )

     

    (defun c:lpt (/ x y coc i p str f)

     

     

     

    (setq fn (getfiled "Doc so lieu tu file " "Toa_do" "txt" 2))

    (setq f (open fn "r"))

    (read-line f)

    (read-line f)

     

    (command "undo" "begin")

    (setq i 0)

    (while (setq str (read-line f))

    (setq x (distof (substr str (- (strlen str) 9) 10)))

    (setq y (distof (substr str (- (strlen str) 21) 11)))

    (setq coc (substr str 1 6))

     

    (command "Point" (setq p (list x y)))

    ;(command "text" p "" "" coc)

     

    )

    (command "undo" "end")

     

    (close f)

     

    )

×