Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
luiz

nhờ viết lisp gán cao độ cho đường đồng mức và ghi ra text

Các bài được khuyến nghị

luiz    1

nhờ các pro giúp mình viết 1 lisp gán cao độ cho đường đồng mức (để chạy tính khối lượng) và ghi giá trị đó nằm trên đường đồng mức luôn để đỡ phải nhập từng text một rất mất tgian và hay bị nhầm.ví dụ cao độ là 10.00 hay 5.00 thì nhập cao độ ra như vậy còn 5.10 hay 5.20 thì nhập ra .10   .20 .có vẻ hơi khoai hy vọng có pro nào làm đc em xin đa tạ :)

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
KangKung    229

Thấy chưa có ai giúp nên post cái Lisp này lên cho bạn dùng thử:

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

Hướng dẫn: Ví dụ muốn đặt 2 đường đồng mức cùng có cao độ là 10 thì quét chọn cả 2 đường đồng mức đó luôn. Sau đó nhập độ cao đường đồng mức và chiều cao chữ. Cuối cùng chọn vị trí ghi Text. Khi nào không muốn ghi Text nữa thì chuột phải hoặc Enter hoặc Space.

;GAN CAO DO CHO DUONG DONG MUC VA GHI RA TEXT
;============KANGKUNG 13/04/2013=============
(defun C:kk( / index Height pt taphop)
  (setq taphop (ssget '((0 . "POLYLINE,LWPOLYLINE"))))
  (if (/= docao nil)
    (setq docao(read(lisped (rtos docao 2 2))))
    (setq docao(read(lisped "Nhap do cao duong dong muc vao day")))
    )
  (setq Height(getreal "\n Nhap chieu cao chu: "))
  (setq index 0)
  (while (< index (sslength taphop))
    (vla-put-elevation (vlax-ename->vla-object (ssname taphop index)) docao)
    (setq index (1+ index))
    )
  (while (setq pt(getpoint "\n Pick diem chen TEXT: " ))
      (entmake (list '(0 . "TEXT") (cons 10 pt) (cons 40 Height) (cons 1 (rtos docao 2 2))))
      )
  (princ)
  )
(princ "\n              KangKung - 13/04/2013\n")
(princ "\n           Nhap KK de chay chuong trinh\n")
  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
luiz    1

 

Thấy chưa có ai giúp nên post cái Lisp này lên cho bạn dùng thử:

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

Hướng dẫn: Ví dụ muốn đặt 2 đường đồng mức cùng có cao độ là 10 thì quét chọn cả 2 đường đồng mức đó luôn. Sau đó nhập độ cao đường đồng mức và chiều cao chữ. Cuối cùng chọn vị trí ghi Text. Khi nào không muốn ghi Text nữa thì chuột phải hoặc Enter hoặc Space.

;GAN CAO DO CHO DUONG DONG MUC VA GHI RA TEXT
;============KANGKUNG 13/04/2013=============
(defun C:kk( / index Height pt taphop)
  (setq taphop (ssget '((0 . "POLYLINE,LWPOLYLINE"))))
  (if (/= docao nil)
    (setq docao(read(lisped (rtos docao 2 2))))
    (setq docao(read(lisped "Nhap do cao duong dong muc vao day")))
    )
  (setq Height(getreal "\n Nhap chieu cao chu: "))
  (setq index 0)
  (while (< index (sslength taphop))
    (vla-put-elevation (vlax-ename->vla-object (ssname taphop index)) docao)
    (setq index (1+ index))
    )
  (while (setq pt(getpoint "\n Pick diem chen TEXT: " ))
      (entmake (list '(0 . "TEXT") (cons 10 pt) (cons 40 Height) (cons 1 (rtos docao 2 2))))
      )
  (princ)
  )
(princ "\n              KangKung - 13/04/2013\n")
(princ "\n           Nhap KK de chay chuong trinh\n")

tks bác kangkung đã giúp đỡ rất nhanh.lisp này dùng khá tốt, nhưng có thể nhờ bác sửa giúp em thêm 1 chút là khi chọn điểm chèn text cao độ thì mình pick vào đường đồng mức đó rồi nó chèn text song song với đường đmức mình vừa chọn và cách đường đmức 1 khoảng = 1/2 chiều cao text, ah thêm cái là đường đmức nào mình gán cao độ cho nó rồi thì nó sẽ đổi sang màu nào đó, ví dụ màu 2 chẳng hạn. thanks!

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
KangKung    229

Lisp sửa theo yêu cầu của bạn đây: http://www.cadviet.com/upfiles/3/71162_21lisp_gan_cao_do_cho_pline_va_ghi_ra_text_rev1.lsp

Ghóp ý thêm một chút nhé:

1. Trong bản vẽ thường cỡ chữ dùng để ghi chú đồng mức được cố định nên bạn chỉ nhập lần đầu thôi, còn từ lần thứ 2 trở đi thì không cần phải nhập nữa. Nếu cỡ chữ thay đổi liên tục (cái này hơi hiếm) thì bạn cho mình biết để sửa lại code.

2. Khi bạn chọn điểm chèn thì không nhất thiết phải chọn chính xác vị trí trên đường đồng mức cần ghi. Cứ chọn gần đó thôi và Lisp sẽ ghi Text vào đường đồng mức gần nhất với khoảng cách bằng 1/2 cao chữ. Và để tránh trường hợp chữ ngược chữ xuôi theo hướng đi của đường đồng mức thì mình đặt Text luôn luôn ở bên phải của đường đồng mức và xoay chữ sao cho không bị ngược trên bản vẽ chuẩn North Up.

3. Thêm 1 tính năng nữa đó là tự động tính bước nhảy của đường đồng mức giữa 2 lần nhập liên tiếp. Ví dụ lần đầu tiên bạn nhập cao độ đường đồng mức là 2, lần thứ hai là 4 thì từ lần thứ 3 trở đi Lisp sẽ tự động điền giá trị độ cao là 6, 8, 10 .... vào ô nhập. Đồng ý thì chỉ việc nhấn OK, không thì nhập giá trị khác. Tuy nhiên nếu bạn thao tác một cách có quy luật thì không phải mất công nhập số từ bàn phím nhiều lần.

;GAN CAO DO CHO DUONG DONG MUC VA GHI RA TEXT
;=======KANGKUNG 14/04/2013 - REV1===========
(defun C:kk( / i index pt pt1 pt2 taphop lst huong)
  (command "UNDO" "BE")
  (setq os(getvar "OSMODE"))
  (setvar "OSMODE" 0)
  (setq taphop (ssget '((0 . "POLYLINE,LWPOLYLINE"))))
  (if (and (/= docao nil) (= (length list_caodo) 2))
    (setq docao(read(lisped (rtos (+ (- (nth 1 list_caodo) (nth 0 list_caodo)) docao) 2 2))))
    (if (/= docao nil)
      (setq docao(read(lisped (rtos docao 2 2))))
      (setq docao(read(lisped "Nhap do cao duong dong muc vao day")))
      )
    )
  (if (< (length list_caodo) 2)
    (setq list_caodo(append list_caodo (list docao)))
    (setq list_caodo(append (list (nth 1 list_caodo)) (list docao)))
    )
  (if (= Height nil)
    (setq Height(read(lisped "Nhap cao chu vao day")))
    )
  (setq index 0)
  (while (< index (sslength taphop))
    (vla-put-elevation (vlax-ename->vla-object (ssname taphop index)) docao)
    (vla-put-color (vlax-ename->vla-object (ssname taphop index)) 2)
    (setq index (1+ index))
    )
  (while (setq pt(getpoint "\n Pick diem chen TEXT: " ))
    (huongtext)
    (entmake (list '(0 . "TEXT") (cons 10 pt2) (cons 40 Height) (cons 1 (rtos docao 2 2)) (cons 50 huong)))
    )
  (setvar "OSMODE" os)
  (command "UNDO" "END")
  (princ)
  )
(defun huongtext()
  (setq i 0)
  (setq lst(list))
  (while (< i (sslength taphop))
    (setq dt(ssname taphop i))
    (setq pt1(vlax-curve-getClosestPointTo dt pt))
    (if (and (<= pi (angle pt1 pt)) (<= (angle pt1 pt) (* 2 pi)))
      (setq pt2(polar pt1 (angle pt pt1) (/ Height 2)))
      (setq pt2(polar pt1 (angle pt1 pt) (/ Height 2)))
      )
    (if (= (vlax-curve-getDistAtPoint dt (vlax-curve-getClosestPointTo dt pt)) (vla-get-length (vlax-ename->vla-object dt)))
      (setq huong(angle ( vlax-curve-getPointAtDist dt (+ (vlax-curve-getDistAtPoint dt (vlax-curve-getClosestPointTo dt pt)) -0.001)) (vlax-curve-getClosestPointTo dt pt) ))
      (setq huong(angle (vlax-curve-getClosestPointTo dt pt) ( vlax-curve-getPointAtDist dt (+ (vlax-curve-getDistAtPoint dt (vlax-curve-getClosestPointTo dt pt)) 0.001))))
      )
    (if (and (> huong (/ pi 2)) (< huong (/ (* 3 pi) 2))) (setq huong(- huong pi)))
    (setq lst(append lst (list (list (distance pt pt1) huong pt2))))
    (setq i(1+ i))
    )
  (setq lst(vl-sort lst '(lambda (e1 e2) (< (car e1) (car e2)))))
  (setq huong(cadr(nth 0 lst)))
  (setq pt2(caddr(nth 0 lst)))
  )
(princ "\n              KangKung - 14/04/2013\n")
(princ "\n           Nhap KK de chay chuong trinh\n")
  • Vote tăng 2

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
luiz    1

 

Lisp sửa theo yêu cầu của bạn đây: http://www.cadviet.com/upfiles/3/71162_21lisp_gan_cao_do_cho_pline_va_ghi_ra_text_rev1.lsp

Ghóp ý thêm một chút nhé:

1. Trong bản vẽ thường cỡ chữ dùng để ghi chú đồng mức được cố định nên bạn chỉ nhập lần đầu thôi, còn từ lần thứ 2 trở đi thì không cần phải nhập nữa. Nếu cỡ chữ thay đổi liên tục (cái này hơi hiếm) thì bạn cho mình biết để sửa lại code.

2. Khi bạn chọn điểm chèn thì không nhất thiết phải chọn chính xác vị trí trên đường đồng mức cần ghi. Cứ chọn gần đó thôi và Lisp sẽ ghi Text vào đường đồng mức gần nhất với khoảng cách bằng 1/2 cao chữ. Và để tránh trường hợp chữ ngược chữ xuôi theo hướng đi của đường đồng mức thì mình đặt Text luôn luôn ở bên phải của đường đồng mức và xoay chữ sao cho không bị ngược trên bản vẽ chuẩn North Up.

3. Thêm 1 tính năng nữa đó là tự động tính bước nhảy của đường đồng mức giữa 2 lần nhập liên tiếp. Ví dụ lần đầu tiên bạn nhập cao độ đường đồng mức là 2, lần thứ hai là 4 thì từ lần thứ 3 trở đi Lisp sẽ tự động điền giá trị độ cao là 6, 8, 10 .... vào ô nhập. Đồng ý thì chỉ việc nhấn OK, không thì nhập giá trị khác. Tuy nhiên nếu bạn thao tác một cách có quy luật thì không phải mất công nhập số từ bàn phím nhiều lần.

;GAN CAO DO CHO DUONG DONG MUC VA GHI RA TEXT
;=======KANGKUNG 14/04/2013 - REV1===========
(defun C:kk( / i index pt pt1 pt2 taphop lst huong)
  (command "UNDO" "BE")
  (setq os(getvar "OSMODE"))
  (setvar "OSMODE" 0)
  (setq taphop (ssget '((0 . "POLYLINE,LWPOLYLINE"))))
  (if (and (/= docao nil) (= (length list_caodo) 2))
    (setq docao(read(lisped (rtos (+ (- (nth 1 list_caodo) (nth 0 list_caodo)) docao) 2 2))))
    (if (/= docao nil)
      (setq docao(read(lisped (rtos docao 2 2))))
      (setq docao(read(lisped "Nhap do cao duong dong muc vao day")))
      )
    )
  (if (< (length list_caodo) 2)
    (setq list_caodo(append list_caodo (list docao)))
    (setq list_caodo(append (list (nth 1 list_caodo)) (list docao)))
    )
  (if (= Height nil)
    (setq Height(read(lisped "Nhap cao chu vao day")))
    )
  (setq index 0)
  (while (< index (sslength taphop))
    (vla-put-elevation (vlax-ename->vla-object (ssname taphop index)) docao)
    (vla-put-color (vlax-ename->vla-object (ssname taphop index)) 2)
    (setq index (1+ index))
    )
  (while (setq pt(getpoint "\n Pick diem chen TEXT: " ))
    (huongtext)
    (entmake (list '(0 . "TEXT") (cons 10 pt2) (cons 40 Height) (cons 1 (rtos docao 2 2)) (cons 50 huong)))
    )
  (setvar "OSMODE" os)
  (command "UNDO" "END")
  (princ)
  )
(defun huongtext()
  (setq i 0)
  (setq lst(list))
  (while (< i (sslength taphop))
    (setq dt(ssname taphop i))
    (setq pt1(vlax-curve-getClosestPointTo dt pt))
    (if (and (<= pi (angle pt1 pt)) (<= (angle pt1 pt) (* 2 pi)))
      (setq pt2(polar pt1 (angle pt pt1) (/ Height 2)))
      (setq pt2(polar pt1 (angle pt1 pt) (/ Height 2)))
      )
    (if (= (vlax-curve-getDistAtPoint dt (vlax-curve-getClosestPointTo dt pt)) (vla-get-length (vlax-ename->vla-object dt)))
      (setq huong(angle ( vlax-curve-getPointAtDist dt (+ (vlax-curve-getDistAtPoint dt (vlax-curve-getClosestPointTo dt pt)) -0.001)) (vlax-curve-getClosestPointTo dt pt) ))
      (setq huong(angle (vlax-curve-getClosestPointTo dt pt) ( vlax-curve-getPointAtDist dt (+ (vlax-curve-getDistAtPoint dt (vlax-curve-getClosestPointTo dt pt)) 0.001))))
      )
    (if (and (> huong (/ pi 2)) (< huong (/ (* 3 pi) 2))) (setq huong(- huong pi)))
    (setq lst(append lst (list (list (distance pt pt1) huong pt2))))
    (setq i(1+ i))
    )
  (setq lst(vl-sort lst '(lambda (e1 e2) (< (car e1) (car e2)))))
  (setq huong(cadr(nth 0 lst)))
  (setq pt2(caddr(nth 0 lst)))
  )
(princ "\n              KangKung - 14/04/2013\n")
(princ "\n           Nhap KK de chay chuong trinh\n")

tuyệt vời. e cảm ơn bác kangkung rất rất nhiều nhé :) 

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
phamthanhbinh    3.123

 

Lisp sửa theo yêu cầu của bạn đây: http://www.cadviet.com/upfiles/3/71162_21lisp_gan_cao_do_cho_pline_va_ghi_ra_text_rev1.lsp

Ghóp ý thêm một chút nhé:

1. Trong bản vẽ thường cỡ chữ dùng để ghi chú đồng mức được cố định nên bạn chỉ nhập lần đầu thôi, còn từ lần thứ 2 trở đi thì không cần phải nhập nữa. Nếu cỡ chữ thay đổi liên tục (cái này hơi hiếm) thì bạn cho mình biết để sửa lại code.

2. Khi bạn chọn điểm chèn thì không nhất thiết phải chọn chính xác vị trí trên đường đồng mức cần ghi. Cứ chọn gần đó thôi và Lisp sẽ ghi Text vào đường đồng mức gần nhất với khoảng cách bằng 1/2 cao chữ. Và để tránh trường hợp chữ ngược chữ xuôi theo hướng đi của đường đồng mức thì mình đặt Text luôn luôn ở bên phải của đường đồng mức và xoay chữ sao cho không bị ngược trên bản vẽ chuẩn North Up.

3. Thêm 1 tính năng nữa đó là tự động tính bước nhảy của đường đồng mức giữa 2 lần nhập liên tiếp. Ví dụ lần đầu tiên bạn nhập cao độ đường đồng mức là 2, lần thứ hai là 4 thì từ lần thứ 3 trở đi Lisp sẽ tự động điền giá trị độ cao là 6, 8, 10 .... vào ô nhập. Đồng ý thì chỉ việc nhấn OK, không thì nhập giá trị khác. Tuy nhiên nếu bạn thao tác một cách có quy luật thì không phải mất công nhập số từ bàn phím nhiều lần.

;GAN CAO DO CHO DUONG DONG MUC VA GHI RA TEXT
;=======KANGKUNG 14/04/2013 - REV1===========
(defun C:kk( / i index pt pt1 pt2 taphop lst huong)
  (command "UNDO" "BE")
  (setq os(getvar "OSMODE"))
  (setvar "OSMODE" 0)
  (setq taphop (ssget '((0 . "POLYLINE,LWPOLYLINE"))))
  (if (and (/= docao nil) (= (length list_caodo) 2))
    (setq docao(read(lisped (rtos (+ (- (nth 1 list_caodo) (nth 0 list_caodo)) docao) 2 2))))
    (if (/= docao nil)
      (setq docao(read(lisped (rtos docao 2 2))))
      (setq docao(read(lisped "Nhap do cao duong dong muc vao day")))
      )
    )
  (if (< (length list_caodo) 2)
    (setq list_caodo(append list_caodo (list docao)))
    (setq list_caodo(append (list (nth 1 list_caodo)) (list docao)))
    )
  (if (= Height nil)
    (setq Height(read(lisped "Nhap cao chu vao day")))
    )
  (setq index 0)
  (while (< index (sslength taphop))
    (vla-put-elevation (vlax-ename->vla-object (ssname taphop index)) docao)
    (vla-put-color (vlax-ename->vla-object (ssname taphop index)) 2)
    (setq index (1+ index))
    )
  (while (setq pt(getpoint "\n Pick diem chen TEXT: " ))
    (huongtext)
    (entmake (list '(0 . "TEXT") (cons 10 pt2) (cons 40 Height) (cons 1 (rtos docao 2 2)) (cons 50 huong)))
    )
  (setvar "OSMODE" os)
  (command "UNDO" "END")
  (princ)
  )
(defun huongtext()
  (setq i 0)
  (setq lst(list))
  (while (< i (sslength taphop))
    (setq dt(ssname taphop i))
    (setq pt1(vlax-curve-getClosestPointTo dt pt))
    (if (and (<= pi (angle pt1 pt)) (<= (angle pt1 pt) (* 2 pi)))
      (setq pt2(polar pt1 (angle pt pt1) (/ Height 2)))
      (setq pt2(polar pt1 (angle pt1 pt) (/ Height 2)))
      )
    (if (= (vlax-curve-getDistAtPoint dt (vlax-curve-getClosestPointTo dt pt)) (vla-get-length (vlax-ename->vla-object dt)))
      (setq huong(angle ( vlax-curve-getPointAtDist dt (+ (vlax-curve-getDistAtPoint dt (vlax-curve-getClosestPointTo dt pt)) -0.001)) (vlax-curve-getClosestPointTo dt pt) ))
      (setq huong(angle (vlax-curve-getClosestPointTo dt pt) ( vlax-curve-getPointAtDist dt (+ (vlax-curve-getDistAtPoint dt (vlax-curve-getClosestPointTo dt pt)) 0.001))))
      )
    (if (and (> huong (/ pi 2)) (< huong (/ (* 3 pi) 2))) (setq huong(- huong pi)))
    (setq lst(append lst (list (list (distance pt pt1) huong pt2))))
    (setq i(1+ i))
    )
  (setq lst(vl-sort lst '(lambda (e1 e2) (< (car e1) (car e2)))))
  (setq huong(cadr(nth 0 lst)))
  (setq pt2(caddr(nth 0 lst)))
  )
(princ "\n              KangKung - 14/04/2013\n")
(princ "\n           Nhap KK de chay chuong trinh\n")

Hề hề hề,

Bác KangKung cho hỏi thăm đường một chút.

Cái hàm (lisped .....) này có thể tham khảo ở đâu ạ.?? Mình tìm hoài trong help và help developer đều không thấy. mặc dầu khi xài thì thấy nó giống như cái lệng ddedit nhưng chưa hiểu rõ về nó lắm. Rất mong bác giải thích thêm. Xin chân thành cám ơn.

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
phamthanhbinh    3.123

Tool express.

Hề hề hề,

Chào bác DoanVanHa, mình cũng đoán vậy và tìm rồi, nhưng chưa thấy lisp nào trong express tools có tên là lisped cả bác ạ. Chắc nó nằm trong một file nào đó mà mình mò chưa ra.

Hề hề hề,...

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
phamthanhbinh    3.123

Tool express.

Hề hề hề,

Chào bác DoanVanHa, mình cũng đoán vậy và tìm rồi, nhưng chưa thấy lisp nào trong express tools có tên là lisped cả bác ạ. Chắc nó nằm trong một file nào đó mà mình mò chưa ra.

Hề hề hề,...

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
luiz    1

các bác có thể chỉnh sửa cái lisp này thêm 1 tí thế này nữa thì đúng ý em quá : khi nhập cao độ thì chỉ những cao độ chẵn như 1.00 hay 2.00 ... thì mới ghi text ra đầy đủ còn lẻ như 1.10 hay 1.20 1.30 ..vvv.. thì chỉ xuất text ra là .10  .20  .30 vvv... thôi thì tốt quá :) các bác giải quyết giúp em với nhé

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Doan Van Ha    2.680

Hề hề hề,

Chào bác DoanVanHa, mình cũng đoán vậy và tìm rồi, nhưng chưa thấy lisp nào trong express tools có tên là lisped cả bác ạ. Chắc nó nằm trong một file nào đó mà mình mò chưa ra.

Hề hề hề,...

Xin lỗi bác Bình. Tôi nhầm hàm lisped với 1 hàm express khác. Còn hàm này nó nằm trong đây:

DCL: trong file "acad.dcl".

LSP: trong file "acad2007doc.lsp" (tương tự: acad2008doc.lsp, acad2009doc.lsp...).

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
KangKung    229

@Luiz: Tìm trong Lisp đoạn code này (cons 1 (rtos docao 2 2)) và thay bằng đoạn code này (cons 1 (cond ((= (rem docao (fix docao)) 0) (rtos docao 2 2)) ((/= (rem docao (fix docao)) 0) (substr (rtos (rem docao (fix docao)) 2 2) 2)))).

Bác Phamthanhbinh: cái thằng LispEd  này thường dùng để Edit những đối tượng MText có ít hơn 80 kí tự bằng cách gán biến MTEXTED. Ví dụ:

(setvar "MTEXTED" ".LispEd"). Những đối tượng MText có ít hơn 80 kí tự khi được hiệu chỉnh sẽ hiện lên hộp thoại MText Editor, còn lớn hơn 80 kí tự thì sẽ hiện hộp thoại Edit Mtext như bình thường hoặc hiện cửa sổ Notepad nếu đặt biến MTEXTED thành ".LispEd#notepad". Muốn khôi phục chế độ như bình thường thì (setvar "MTEXTED" "")

 

(cons 1 (cond
 ((= (rem docao (fix docao)) 0) (rtos docao 2 2))
 
(cons 1 (cond
 ((= (rem docao (fix docao)) 0) (rtos docao 2 2))
 
(cons 1 (cond
 ((= (rem docao (fix docao)) 0) (rtos docao 2 2))
 
(cons 1 (cond
 ((= (rem docao (fix docao)) 0) (rtos docao 2 2))
  • Vote tăng 2

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
luiz    1

 

@Luiz: Tìm trong Lisp đoạn code này (cons 1 (rtos docao 2 2)) và thay bằng đoạn code này (cons 1 (cond ((= (rem docao (fix docao)) 0) (rtos docao 2 2)) ((/= (rem docao (fix docao)) 0) (substr (rtos (rem docao (fix docao)) 2 2) 2)))).

Bác Phamthanhbinh: cái thằng LispEd  này thường dùng để Edit những đối tượng MText có ít hơn 80 kí tự bằng cách gán biến MTEXTED. Ví dụ:

(setvar "MTEXTED" ".LispEd"). Những đối tượng MText có ít hơn 80 kí tự khi được hiệu chỉnh sẽ hiện lên hộp thoại MText Editor, còn lớn hơn 80 kí tự thì sẽ hiện hộp thoại Edit Mtext như bình thường hoặc hiện cửa sổ Notepad nếu đặt biến MTEXTED thành ".LispEd#notepad". Muốn khôi phục chế độ như bình thường thì (setvar "MTEXTED" "")

 

(cons 1 (cond
 ((= (rem docao (fix docao)) 0) (rtos docao 2 2))
 
(cons 1 (cond
 ((= (rem docao (fix docao)) 0) (rtos docao 2 2))
 
(cons 1 (cond
 ((= (rem docao (fix docao)) 0) (rtos docao 2 2))
 
(cons 1 (cond
 ((= (rem docao (fix docao)) 0) (rtos docao 2 2))

bác ơi em thay đoạn code như bác nói thì ko xuất ra text đc nữa. bác xem lại giúp em với nhé

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
phamthanhbinh    3.123

có cái lisp nào nâng đều hoặc hạ đều elevation của đường polyline không các bác

Hề hề hề,

bạn định nghĩa cái việc nâng đều và hạ đều này đi nhé. Do không phải dân chuyên ngành nên nếu bạn dùng các từ chuyên môn đặc biệt sẽ hơi bị khó hiểu. Tốt nhất là bạn nên cho một ví dụ cụ thể. Khi đã hiểu thì có nhẽ việc thực hiện nó sẽ thuận lợi hơn.

hề hề hề

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
thanhduan2407    227

Gửi tặng bạn!

(vl-load-com)
;;;(Prompt (strcat "\nCh\U+01B0\U+01A1ng tr\U+00ECnh n\U+00E2ng h\U+1EA1 cao \U+0111\U+1ED9 \U+0111\U+01B0\U+1EDDng 3D Polyline"
;;;		"\nL\U+1EC7nh: TGZPL"
;;;		"\nNg\U+01B0\U+1EDDi vi\U+1EBFt: Nguy\U+1EC5n Th\U+00E0nh Du\U+00E2n"
;;;		"\nEmail: heaven2407@gmail.com"
;;;		"\nMobile: 0972.0168.25"
;;;	)
;;;)
;;;(Alert (strcat "\nCh\U+01B0\U+01A1ng tr\U+00ECnh n\U+00E2ng h\U+1EA1 cao \U+0111\U+1ED9 \U+0111\U+01B0\U+1EDDng 3D Polyline"
;;;		"\nL\U+1EC7nh: TGZPL"
;;;		"\nNg\U+01B0\U+1EDDi vi\U+1EBFt: Nguy\U+1EC5n Th\U+00E0nh Du\U+00E2n"
;;;		"\nEmail: heaven2407@gmail.com"
;;;		"\nMobile: 0972.0168.25"
;;;	)
;;;)
(defun C:TGZPL (/ a e1  ObjPL  elistPl     );;;TANG GIAM Z PLINE
(setvar "CMDECHO" 0)
(setq a (getreal "\nNh\U+1EADp gi\U+00E1 tr\U+1ECB Delta c\U+1EA7n thay \U+0111\U+1ED5i cao \U+0111\U+1ED9:  "))
(Alert "Qu\U+00E9t ch\U+1ECDn Polyline")
(setq LtsObjPl (LM:ss->ent (ssget (list (cons 0 "POLYLINE,LWPOLYLINE")))))
(setq Lts2DPLine (vl-remove nil (mapcar '(lambda(x) (if (= (cdr (assoc 100 (reverse (entget x)))) "AcDbPolyline") x nil)) LtsObjPl)))
(setq Lts3DPLine (vl-remove nil (mapcar '(lambda(x) (if (= (cdr (assoc 100 (reverse (entget x)))) "AcDb3dPolyline") x nil)) LtsObjPl)))
(mapcar '(lambda(e2) (NH1PL2D e2 a)) Lts2DPLine)
(mapcar '(lambda(e1) (NH1PL3D e1 a)) Lts3DPLine)
(princ)
)



(defun NH1PL3D (ent a /  edata pt)
  (if (= (cdr (assoc 100 (reverse (entget ent)))) "AcDb3dPolyline")
    (while
      (and
        (setq ent (entnext ent))
        (= (cdr (assoc 0 (entget ent))) "VERTEX")
        (setq edata (entget ent))
	 (setq   pt (cdr (assoc 10 edata)))
      )
      (entmod
        (subst
          (list 10 (car pt) (cadr pt) (+ (caddr pt) a))
          (assoc 10 edata)
          edata
        )
      )
    )
  )
)

(defun NH1PL2D (ent a / elitObj )
(if (= (cdr (assoc 100 (reverse (entget ent)))) "AcDbPolyline")
	(progn
		(setq elitObj (entget ent))
	  	(entmod (subst (cons 38 (+ (cdr (assoc 38 elitObj)) a )) (assoc 38 elitObj) elitObj ))
	)
)
)
(defun LM:ss->ent ( ss / i l )
    (if ss
        (repeat (setq i (sslength ss))
            (setq l (cons (ssname ss (setq i (1- i))) l))
        )
    )
)
  • Like 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay


×